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

次の方法で実行できます。

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 に答える
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 に答える
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))),]
于 2013-01-14T11:24:35.760 に答える