我有一个约15列的数据框,某些行和某些列缺少值NA。
我找到了用同一向量中随机选择的元素替换列中的NA的方法,但是如何在整个数据帧中做到这一点?
例如,如果列名称为age
,我可以这样做:
age[is.na(age)] <- sample(age[!is.na(age)], sum(is.na(age)), replace=F)
我想编写一个对数据框中的每一列(15列)执行上述操作的函数。问题是如何索引每个列?在这种情况下,我似乎无法使用df[i,]
。
答案 0 :(得分:1)
我们可以使用lapply
和replace
df[] <- lapply(df,function(x) replace(x,is.na(x), sample(x[!is.na(x)],sum(is.na(x)))))
在这里,我们逐列遍历整个数据帧,并使用replace
将NA
与sample
以及任何非NA一起循环。