根据 NA 在数据框的其他两个变量中赋值

Assign values based on NA in other two variables of a data frame

给定一个 data.frame,如果 var1 和 var2 同时(意味着在同一行)缺少值,我试图将 var4 的值分配给 var3,否则 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

此处不需要 ifelse,因为您的 "no" 语句没有执行任何操作。您需要做的就是找到正确的行并仅 替换它们,同时保持其余所有行不变。这是一个简单的基础 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]