删除少于1000个观察值的数据框的列

时间:2013-03-18 17:30:52

标签: r

我有一个数据框,我想删除少于1000个观察值的所有列。下面的方法运行正常,但还有更优雅的解决方案吗?

vec <- numeric()

for(i in 1:ncol(dat))
{
    if(length(dat[,i][!is.na(dat[,i])]) >= 1000) 
        vec <- c(vec, i)
}

dat <- dat[,vec]

1 个答案:

答案 0 :(得分:6)

这应该有效:

dat[,colSums(!is.na(dat))>=1000]

在这里,我们首先查看dat中的哪些元素是否为NA,并计算此新数据框的列总和。对于包含至少1000个观察值的列,我们得到TRUE,其他FALSE。因此,我们可以将其用作索引变量,该变量子集原始dat数据框。