【发布时间】:2016-04-06 18:16:49
【问题描述】:
我发现这个函数可以检测任何给定数据帧中每一列的缺失值比例:
propmiss <- function(dataframe) lapply(dataframe,function(x) data.frame(nmiss=sum(is.na(x)), n=length(x), propmiss=sum(is.na(x))/length(x)))
我将它分配给这样的变量:
propmissdf <- propmiss(df)
然后我循环遍历数据框到我的数据中的 NULL 变量,如下所示:
for(i in (1:length(df))){
var = names(df)[i]
if((propmissdf[[var]][[3]]) > 0.3) { #the 3 index represents the proportion inside propmissdf
df[var] <- NULL
}
}
这给了我一个错误:
Error in if ((propmissdf[[var]][[3]]) > 0.3) { :argument is of length zero
但它工作,不知何故。它消除了几个缺失值比例大于 0.3 的变量,但如果我再次运行 for 循环,它会消除更多的变量,直到 3 或 4 次以上,直到消除所有变量。为什么会这样?请随时纠正我的问题,或提出更好的方法来删除 NA 超过 30% 的变量。
【问题讨论】:
标签: r missing-data