删除除一列之外的所有列都为空的行

时间:2013-01-14 11:01:32

标签: r

使用以下代码:

data <- rbind(c(1,1,2,3),
          c(1,1, NA, 4), 
          c(1,4,6,7), 
          c(1,NA, NA, NA), 
          c(1,4, 8, NA))

我想删除列2-4为NA的行。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

你可以这样做:

filteredData <- data[!is.na(data[,2]) | !is.na(data[,4]),]

> data
     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1   NA   NA   NA
[5,]    1    4    8   NA

> filteredData
     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1    4    8   NA

答案 1 :(得分:2)

另一种方式:

 data[! rowSums(is.na(data[,2:4])) == 3, ]

如果它只是第2列 4那么它将是:

data[! rowSums(is.na(data[,c(2,4)])) == 2, ]

答案 2 :(得分:1)

删除第2-4列中所有值均为NA的行:

data[apply(data[,2:4],1,function(x) !all(is.na(x))),]

     [,1] [,2] [,3] [,4]
[1,]    1    1    2    3
[2,]    1    1   NA    4
[3,]    1    4    6    7
[4,]    1    4    8   NA

要从检查NA的列中排除第一列,您可以使用负数索引,如:

data[apply(data[,-1],1,function(x) !all(is.na(x))),]
相关问题