在数据框的其他两个变量中基于NA分配值

时间:2015-02-01 15:52:10

标签: r na

给定一个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

1 个答案:

答案 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]