2015-02-06 42 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