这个问题与前一个问题类似.
我提供此示例数据以解决我的问题.
id=c(1,2,3,4,5,6,7,8,9,10)
var1=c(0,1,2,0,6,9,0,0,3,0)
var2=c(0,0,2,3,0,0,0,5,0,0)
var3=c(0,1,4,3,6,9,0,5,3,0)
data=data.frame(id,var1,var2, var3)
我需要的是:
如果var1 == var2的值,则使var3 == NA,但如果不是,则保留var3的值.
很高兴使用R中的ifelse函数完成它,但欢迎其他选项.
我希望这个问题足够清楚.
问候,
Bazon
最佳答案 用ifelse注意的一件事是条件是否可以是NA.在您的情况下,使用David的示例代码,如果var1或var2是NA,则var3将设置为NA.
我要么在条件中将NAs设置为F,要么执行以下操作:
var3 <- replace(var3, which(var1 == var2), NA)
相比:
data$var1[1] = NA
with(data, ifelse(var1 == var2, NA, var3))
# [1] NA 1 NA 3 6 9 NA 5 3 NA
with(data, replace(var3, which(var1 == var2), NA))
# [1] 0 1 NA 3 6 9 NA 5 3 NA