我想在一个数据框中进行多个列选择,其中许多列取决于缺失值的数量。目的是选择缺失值最大为10%的列,以了解对于多个插补缺失值我必须选择哪个变量。
我曾尝试过使用 randompreop 数据集
计算每列的缺失值
oneD<-data.frame(sapply(randompreop, function(x) sum(is.na (x)) ))
Select the column with less then 10 missing values
nn<-c(rownames(subset(oneD, sapply.randompreop..function.x..sum.is.na.x...<=10)))
然后是初始数据集的子集,从列表nn中选择列
N<-subset(randompreop, select=c(nn))
ncol(N)
此代码有效,但是您知道更简单的代码吗?
谢谢你 Matteo
答案 0 :(得分:1)
据我所知,您的问题是:如果NA过多,则希望从数据集中删除这些列。此行代码将告诉您每一列中有多少个NA:
nas_per_col <- sapply(your_dataset, function(x) sum(is.na(x)))
然后,您可以通过以下方式将数据集仅包含到少于10个NA的那些列中:
your_dataset[ , nas_per_col < 10]