给定一个data.frame,我试图将var4的值分配给var3,如果var1和var2同时(意思是在同一行上)缺少值,否则var3保持自己的值。
我尝试了这个,但它没有用,有什么建议吗?非常感谢。
aaa<-function(x) {
ifelse((is.na(x$var1)&is.na(x$var2)),
x$var3<-x$var4, x$var3<-x$var3)
return(x)
}
例如:
var1 var2 var3 var4
NA NA NA 1.610
5 NA 4 6
2 1 3.5 NA
1 1.5 2.5 3
我希望:
var1 var2 var3 var4
NA NA 1.610 1.610
5 NA 4 6
2 1 3.5 NA
1 1.5 2.5 3
答案 0 :(得分:3)
此处ifelse
不需要因为您的&#34;否&#34;声明没有做任何事情。您需要做的就是找到正确的行并仅替换 ,同时保持其他所有行不变。这是一个简单的基础R方法
indx <- with(df, is.na(var1) & is.na(var2))
df[indx, "var3"] <- df[indx, "var4"]
但是,为了提高效率和减少击键次数,我建议您使用data.table
套餐并通过引用更新值
library(data.table)
setDT(df)[is.na(var1) & is.na(var2), var3 := var4]