将变量中的NA替换为其他观察值

时间:2015-02-06 13:24:21

标签: r

我有一个像这样的数据框:

df <- data.frame(A = c(1, 2, 3, 4, 2, 2, 1, 5, 3),
                 B = c("a", "b", "c", "d", NA, "b", NA, NA, NA ))

我想通过在另一个观察中恢复的vlue来重新设置这个数据帧。 例如,在变量A中,1代表&#34; a&#34;在变量B中;所以NA应该由a重新进行。 但是对于5,我们不能得出结论所以我保留NA。 我怎么能这样做,我被困住了。 谢谢。

1 个答案:

答案 0 :(得分:3)

你可以尝试

df$B <- with(df, ave(as.character(B), A, FUN= function(x)
                  ifelse(is.na(x), na.omit(x), x)))

或使用data.table

library(data.table)
setDT(df)[ ,B:=ifelse(is.na(B), na.omit(B), B) , A]

或者变体

setDT(df)[,B:=if(any(is.na(B))) unique(na.omit(B)),  A][]