删除缺少值的列

Del*_*ine 6 r

我有一个包含大量colums的表,我想删除超过500个缺失值的列.

我已经知道每列缺失值的数量:

library(fields)
t(stats(mm))
Run Code Online (Sandbox Code Playgroud)

我有 :

  N     mean  Std.Dev.    min       Q1  median       Q3 max missing values
V1 1600 8.67  …                                               400
Run Code Online (Sandbox Code Playgroud)

有些列显示所有特征的NA:

      N     mean  Std.Dev.    min       Q1  median       Q3 max missing values
 V50  NA    NA      NA         NA        NA                   NA
Run Code Online (Sandbox Code Playgroud)

我也想删除这些列.

Ram*_*ath 10

这是一个单行班轮 mm[colSums(is.na(mm)) > 500]


Nic*_*bbe 5

如果您存储统计信息的结果,请执行以下操作:

tmpres<-t(stats(mm))
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

whichcolsneedtogo<-apply(tmpres, 1, function(currow){all(is.na(currow)) || (currow["missing values"] > 500)})
Run Code Online (Sandbox Code Playgroud)

最后:

mmclean<-mm[!whichcolsneedtogo]
Run Code Online (Sandbox Code Playgroud)

当然这是未经测试的,因为您没有提供数据来重现您的示例.


cha*_*ler 5

另一个潜在的解决方案(特别适用于数据帧):

data[,!sapply(data,function(x) any(is.na(x)))]