![R logo](https://mom-neuroscience.com/wp-content/uploads/2020/05/210502-r-logo-4-e1621455332869.jpg)
NAの取り扱いシリーズ第2段。
今回は、NAがある行を取り除いて解析する方法。
NAのある行を抽出
まずは、解析したい列に欠損値がある行を抽出する方法。
Dat[!complete.cases(Dat)]
![r-handling-na-10](https://mom-neuroscience.com/wp-content/uploads/2022/03/220327-r-handling-na-10.jpg)
で、例えば "Industry" の列に欠損値がある行を選出する方法。
Dat[is.na(Dat$Industry),]
すると、"Industry" 列が<NA>の14行と15行が抽出された。
![r-handling-na-11](https://mom-neuroscience.com/wp-content/uploads/2022/03/220327-r-handling-na-11.jpg)
NAのある行を除いたデータを抽出
上記Dat[is.na(Dat$Industry),]
を逆にすれば、欠損値がない行を抽出できる。
Dat[!is.na(Dat&Industry),]
![r-handling-na-12](https://mom-neuroscience.com/wp-content/uploads/2022/03/220327-r-handling-na-12.jpg)
レコードを削除した後にデータフレームの番号をリセットする
上記の方法で欠損値行を削除すると、その部分の番号が飛ばされて並ぶことになる。
![r-handling-na-13](https://mom-neuroscience.com/wp-content/uploads/2022/03/220327-r-handling-na-13.jpg)
データ解析法によってはそのままにしておく方が良い時もあるけど、データのサンプル数とか簡単に把握できるようにしておきたいとか、色々な目的でデータフレームのインデックスをリセットしたい時がある。
そんな時の方法2選。
これを修正するためには、
rownames()
を使う。
rownames() <- 1:nrow()
データのrownamesを、1からrownameの数(1:nrow())として指定するとOK。
rownames(Dat) <- 1:rnow(Dat)
列の番号が1から順番にあてがわれ、最終行は除外した2行分だけ少ない "498" になった。
![NA-reset](https://mom-neuroscience.com/wp-content/uploads/2022/03/220328-r-handling-na-reset.jpg)
rownames() <- NULL
NULLでリセットしてもOK。
rownames(Dat) <- NULL
番号がリセットされて、最終行は2行分抜いた "498" になった。
![NA-reset](https://mom-neuroscience.com/wp-content/uploads/2022/03/220328-r-handling-na-reset.jpg)