我有一张看起来像这样的表:
A B
aa bb
aa
aa bb
我想检查数据框单元格是否为空白,如果是,请找到如下结果表:
A B S
aa bb bb
aa aa
aa bb bb
我正在使用此代码,但它不起作用
for(k in dim(df))
if (df$BB == ""){
df$S <- df$AA
}else {df$S <- df$BB}
'ifelse' 是你的朋友。它是矢量化的,所以这里不需要循环。
df <- data.frame(A = c("aa","aa","aa"), B = c("bb","","bb"))
df$S <- ifelse(df$B == '', df$A, df$B)
# A B S
#1 aa bb bb
#2 aa aa
#3 aa bb bb
如果你想调整你的代码,这可以工作,但它的效率低于ifelse
变体:
df$S = NA
for(k in 1:nrow(df)) df$S[k] <- if (df$B[k] == "") df$A[k] else df$B[k]
注意1:nrow(df)
代替dim(df)
和固定索引(df$B[k]
vs df$BB
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句