[R]ベクトルの構成要素に含まれるNA(欠損値)を取り除く
ベクトルの構成要素からNA(欠損値)を取り除くには,is.na関数を使って判定して取り除けばよい.
Rの書籍にはベクトルの構成要素からNAだけを取り除く方法が散見されるが,実務ではそれは現実的ではない.例えば,ペアとなる値がそれぞれあり(例えば時間xとその時点での値y),片方の値がNAのときはペアのデータ自体を消したいときがある.以下はそのような例で一方の値がNAのペアを取り除く例.NAではない値のインデックスを抽出するのにwhich関数とis.na関数を併用している.
> x <- c(1, 2, 4, 7)
> y <- c(0, 4, NA, 49)
> y[! is.na(y)] # 単純にNAを取り除いて値を表示
[1] 0 4 49
> idx <- which(! is.na(y)) # NAではない値のインデックスを抽出
> idx
[1] 1 2 4
> x[idx]
[1] 1 2 7
> y[idx]
[1] 0 4 49
