用该列中的随机值替换数据帧中的NA

时间:2019-01-14 02:48:48

标签: r

我有一个约15列的数据框,某些行和某些列缺少值NA。

我找到了用同一向量中随机选择的元素替换列中的NA的方法,但是如何在整个数据帧中做到这一点?

例如,如果列名称为age,我可以这样做:

age[is.na(age)] <- sample(age[!is.na(age)], sum(is.na(age)), replace=F)

我想编写一个对数据框中的每一列(15列)执行上述操作的函数。问题是如何索引每个列?在这种情况下,我似乎无法使用df[i,]

1 个答案:

答案 0 :(得分:1)

我们可以使用lapplyreplace

df[] <- lapply(df,function(x) replace(x,is.na(x), sample(x[!is.na(x)],sum(is.na(x)))))

在这里,我们逐列遍历整个数据帧,并使用replaceNAsample以及任何非NA一起循环。