0

使用以下代码:

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 的行。有没有办法做到这一点?

4

3 回答 3

2

另一种方式:

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

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

data[! rowSums(is.na(data[,c(2,4)])) == 2, ]
于 2013-01-14T11:31:08.607 回答
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
于 2013-01-14T11:06:10.977 回答
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's 的列中排除第一列,您可以使用负索引,例如:

data[apply(data[,-1],1,function(x) !all(is.na(x))),]
于 2013-01-14T11:24:35.760 回答