![](/img/trans.png)
[英]Assign the value in the next row if condition met and leave other values the same
[英]change values of dataframe if a condition is met and leave unchanged if not
我有一個 df ( my_df : n by m ) 和一個矩陣 ( my_mat : n by m again )。
如果 my_mat[j,i] 不為零,我想更改 my_df[j,i] 的值,如果 my_mat[j,i] 為零,則保持原樣。
然后我想在 grp 列中返回包含該行中最高值的 my_df 列的索引。
for(j in 1:nrow(my_df)){
for(i in 1:nclo(my_df){
if(my.mat[j,i]!=0)
{my.df[j,i] <- (my.mat[j,i])/(crossprod(my.vec,my.mat[j,]))
}
my.df$grp[j] <- which.max(my.df[j,])
}
}
我注意到,如果 my.mat[j,i] 為零,我的代碼不會保留 my.df[j,i] 不變。 我該如何解決這個問題?
如果my.mat[j,i]
為零my.mat[j,i]
無法觀察到代碼不會使my_df[j,i]
保持不變。 我刪除了一些錯誤,以便代碼運行:
set.seed(42)
my.mat <- matrix(sample(0:9, 6), 2, 3)
my_df <- as.data.frame(my.mat)
my.vec <- 1:3
my_df[my.mat == 0]
#[1] 0
for(j in 1:nrow(my.mat)) {
for(i in 1:ncol(my.mat)) {
if(my.mat[j,i]!=0) {
my_df[j,i] <- (my.mat[j,i])/(crossprod(my.vec,my.mat[j,]))
}
my_df$grp[j] <- which.max(my_df[j,])
}
}
my_df[1:3][my.mat == 0]
#[1] 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.