R:删除缺少某些百分比值的列

时间:2015-02-16 21:08:26

标签: r dataframe apply na missing-data

我正在使用类似于以下摘录的数据框。

sample.df

Obs   Var1 Var2 Var3
A0001 21   21   21
A0002 21   78   321
A0003 32   98   87
A0004 21   12   54
A0005 21   13   45 
A0006 21   87   45
B0007 84   NA   45
B0008 21   NA   98
B0009  2   NA   45
B0010 12   NA   45

我想删除缺少某些变量百分比的列,例如80%。我尝试了下面的代码:

sample.df.cln <- apply(sample.df, 2, function(x) {
  if (sum(is.na(x)) / nrow(x) > 0.8) {
  x <- NULL  
  }
})

但它返回了以下错误:

Error in if (sum(is.na(x))/nrow(x) > 0.8) { : argument is of length zero

我将不胜感激任何帮助。我还认为将代码封装在函数中是有益的,因此它可以应用于不同的数据框。

1 个答案:

答案 0 :(得分:5)

x <- sample.df[ lapply( sample.df, function(x) sum(is.na(x)) / length(x) ) < 0.1 ]