我有一个像这样的数据框:
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。 我怎么能这样做,我被困住了。 谢谢。
答案 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][]