次の 2 つの条件に基づいて、データセットから行を削除しようとしています。
- 連続する 3 つのセルが
NA
またはの場合、行を削除します - セルが4つ以上の場合
NA
私のサンプルデータ:
data <- rbind(c(1,1,2,3,4,2,3,2),
c(NA,1, NA, 4,1,1,NA,2),
c(1,4,6,7,3,1,2,2),
c(NA,3, NA, 1,NA,2,NA,NA),
c(1,4, NA, NA,NA,4,3,2))
既存の質問内で調査したところ、na.omit
または行complete.cases
を削除できることがわかりましNA
たが、条件があるため、さらに調査を行うと、既存の質問内で次のコードが見つかりました。
data[! rowSums(is.na(data)) >4 , ]
data[! rowSums(is.na(data)) ==3 , ]
最初の行は 2 番目の条件を満たしています。2 行目は 3の行を削除しますNA
が、連続する行を検索せず、合計 3NA
の行を削除します。例えば:
> data
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 1 2 3 4 2 3 2
[2,] NA 1 NA 4 1 1 NA 2
[3,] 1 4 6 7 3 1 2 2
[4,] NA 3 NA 1 NA 2 NA NA
[5,] 1 4 NA NA NA 4 3 2
> data[! rowSums(is.na(data)) ==3 , ]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 1 2 3 4 2 3 2
[2,] 1 4 6 7 3 1 2 2
[3,] NA 3 NA 1 NA 2 NA NA
私が実際に望んでいるのはNA
、2 行目ではなく 3 つの連続した 's があるため、5 行目を削除することだけです。
どうすればこれを克服できますか?