2015-02-06 38 views
3

更换NA我有这样一个数据帧:通过其值的变量与其他观测

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)) 

我想RO remplace这个数据帧由vlue在其他观测调理。 例如,在变量A中,1代表变量B中的“a”;所以NA应该被a重新放置。 但是对于5,我们不能总结,所以我保留NA。 我怎么能这样做,我卡住了。 谢谢。

回答

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][] 
+0

非常感谢你,伙计,你救救我吧! – 2015-02-06 13:40:33

+0

@MostafaRifi没问题。 – akrun 2015-02-06 13:40:50