次のコードを使用します。
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 である行を削除したいと思います。これを行う方法はありますか?
次のコードを使用します。
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 である行を削除したいと思います。これを行う方法はありますか?
次の方法で実行できます。
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
別の方法:
data[! rowSums(is.na(data[,2:4])) == 3, ]
2 列目と4列目だけの場合は、次のようになります。
data[! rowSums(is.na(data[,c(2,4)])) == 2, ]
列 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))),]