RのNA(欠損値)の除去についてまとめます。
欠損値 NA とは
RでNAは欠損値で、データの観測ができない場合などを表します(ベクターやデータフレームにNAが入っていることがあります)。NAを含むデータを使った計算では計算結果もNAになる場合があり、必要に応じて除去するなどの対応が必要です。
$ R # Rを起動 > data <- c(1, 2, 3, 4, 5) > sum(data) [1] 15 > data <- c(1, 2, 3, NA, 5) > sum(data) [1] NA
欠損値 NA の除去
データにNAが入っているかどうかを調べて、データから除去して計算したり・計算時に除去オプションを指定したりします。
欠損値 NA を調べる
NAが含まれているかを調べるには、is.na
関数を使います。各データにNAの判定を行い、TRUE/FALSEで結果を返します。NAのデータは判定がTRUEです。結果をtable
関数に通すと、NAがどのくらい含まれているかが判ります。
> data <- c(1, 2, 3, NA, 5) > is.na(data) [1] FALSE FALSE FALSE TRUE FALSE > table(is.na(data)) FALSE TRUE 4 1
欠損値 NA の除去方法 – NAを除外する
RでNAを除去するには、データ参照でNA以外を指定したり・complete.cases
関数でNAを含まないデータを取得したりします。
> data[is.na(data)==F] [1] 1 2 3 5 > data[complete.cases(data)] [1] 1 2 3 5
データフレームやマトリックスを使う場合は、na.omit
関数やcomplete.cases
関数を使うと簡単に欠損値 NAを除去できるので便利です。
> DF x y 1 1 0 2 2 10 3 3 NA > na.omit(DF) x y 1 1 0 2 2 10 > df <- subset(DF, complete.cases(DF)) > df x y 1 1 0 2 2 10
欠損値 NA の除去方法 – オプションで指定する
RでNAを除去して計算するには、関数にna.rm=T(TRUE)
オプションを指定して呼び出します。ほぼ全ての基本的な関数で、欠損値NAの取り扱いができるようになっています。
> data [1] 1 2 3 NA 5 > sum(data, na.rm=T) [1] 11 > max(data, na.rm=T) [1] 5
欠損値の扱いについては、関数のヘルプで調べることができます。
> ?sum
sum package:base R Documentation
Sum of Vector Elements
Description:
‘sum’ returns the sum of all the values present in its
arguments.
Usage:
sum(..., na.rm = FALSE)
Arguments:
...: numeric or complex or logical vectors.
na.rm: logical. Should missing values (including ‘NaN’) be
removed?