1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rでの欠損値処理

Posted at

欠損値

RにはNAとNULLの2種類が存在するが、この2種類は異なる挙動を示します。
データで「-」「99」などによって空白が表現される。

NA

NA( not available )の略で、計測値不明を意味する。
NAはvectorの要素として使われる。
is.naでvectorの各要素が欠損しているかを確認できる。

R
z<-c(1,2,NA,8,3,NA,3)
z
[1]  1  2 NA  8  3 NA  3

is.na(z)
[1] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 
# 欠損(NA)を除く
z1<-na.omit(z)
z1
[1] 1 2 8 3 3
attr(,"na.action")
[1] 3 6
attr(,"class")
[1] "omit"
 
# zの平均値は計算できない
Error: unexpected input in "z\"

mean(z)
[1] NA
 
# na.rmがTRUEの場合、meanは欠落しているデータを削除してから、平均を計算する
mean(z, na.rm=TRUE)
[1] 3.4
 
# sum,min,max,var,sdでも同様
 
sum(z, na.rm=TRUE)
[1] 17
 
var(z, na.rm=TRUE)
[1] 7.3
 
sd(z, na.rm=TRUE)
[1] 2.701851
 
sd(z, na.rm=TRUE)**2
[1] 7.3

ちなみに、NAの平均値を計算できないのは、NAは計測値が不明であることを意味しているので、
-∞から∞の値をとる可能性があるので、

1 + NA → 1 とするのは妥当でないことがわかります。

欠損値をどうするかは統計分析的には非常に重要なテーマで、よく使われるのは多重代入法である
Rでは、mi,mice,Ameliaパッケージで実装されている

NULL

NULLとは何もないことを意味します。(ドイツ語のNullが語源?)
欠損とは厳密に異なり、何もない、空白であることをあらわします。

NAとNULLの重要な違いは、NULLはvectorの中に存在できません。
もしNULLをvectorに使用しても、消えてしまう。

R
z<-c(1,NULL,3)
z
[1] 1 3
 
d<- NULL
is.null(d)
[1] TRUE

is.null(7)
[1] FALSE

空白となった場合の、取り扱いは調査中です。。。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?