!欠損値の取り扱い Rを使っていて最も悩むことの一つが、データに含まれる欠損値だ。 具体的には、 *NaN (Not a number) *Inf (Infinit) *NA (Not applicable) *Null (null) 監査の場合、Infはほとんど出てこないが、特に、頻出するのがNAだ。 NAがある場合は関数がエラーを出して動かないことがあり、例えばNAを含むデータを合計すると、NAという結果(つまりエラー)を返してくる。 これは、NAというデータを含んだままの処理をして意図せざる結果を受け入れてしまうことを回避するためのRの仕様なので、全データを目視できない以上、便利な機能である。 !対処 関数によっては、NAを除去して演算するオプションが付いていることがある。その場合、 na.rm=TRUE とすれば、NAを除いた形で演算する。データ自体は残っている。 また、データフレームdfの場合、 na.omit(df) とすれば、NAを含む行を除いてしまう。監査の場合、データを「取り除く」ことは原則としては避けるべきなので、支障のないデータ(たとえばゼロなど)に置き換えて対処するなどが考えられるが、ケースバイケースとなろう。 因子型のデータでNAがある場合、単純にNAを検索して置き換えようとしても、エラーが返ってくる。因子型のデータは因子として認識されていないものは、受け付けてくれないから。詳細は因子型。 !注意 * 関数によっては、デフォルトでNAを外して処理するようになっている(NAがあってもエラーが出ない)ものがある。特に条件抽出する場合には、NAが出るケースと出ないケースがあるので、出ない関数こそ注意したい。 * 会計システムの場合、会計報告目的に見合う品質でデータが作成されていることを保証するために、データの完全性や網羅性は外せない条件である。なぜNAなどの「問題児」が発生するのか、それがシステム上の仕組みとして発生するのであれば、無用なトラブルを起こさないように組織がどのような対処をとっているのかという面も重要である。 !参考リンク http://tips-r.blogspot.jp/2014/09/rna.html