サーチ…


前書き

変数が取る値がわからないときは、その値がNAで示されていないと言います。

備考

欠損値は記号NA (not available)で表されます。不可能な値(例えば、 sqrt(-1)結果)は、記号NaN (数値ではない)で表されます。

不足しているデータを調べる

anyNAは、欠損値が存在するかどうかを報告します。 is.nais.na欠損値を報告します。

vec <- c(1, 2, 3, NA, 5)

anyNA(vec)
# [1] TRUE
is.na(vec)
# [1] FALSE FALSE FALSE  TRUE FALSE

ìs.naは、算術演算(FALSE = 0、TRUE = 1)で整数値に強制される論理ベクトルを返します。これを使用して欠損値の数を調べることができます。

sum(is.na(vec))
# [1] 1

このアプローチを拡張すると、 データフレーム上でcolSumsis.naを使用して、カラムごとにNAsをカウントできます。

colSums(is.na(airquality))
#   Ozone Solar.R    Wind    Temp   Month     Day 
#      37       7       0       0       0       0 

naniarパッケージ (現在githubには存在しますがCRANにはありません)は、不足している値を調べるためのツールを提供します。

NA値によるデータの読み書き

read.*関数で表形式のデータセットを読むとき、Rは自動的に"NA"ような欠損値を探します。ただし、欠損値は常にNA表されるわけではありません。ドット( . )、ハイフン( - )または文字値(たとえばempty )は、値がNAであることを示します。 read.*関数のna.stringsパラメータは、どのシンボル/キャラクタをNA値として扱う必要があるかをRに伝えるために使用できます。

read.csv("name_of_csv_file.csv", na.strings = "-")

複数のシンボルをNAとして読み取る必要があることを示すこともできます。

read.csv('missing.csv', na.strings = c('.','-'))

同様に、 NA sはカスタマイズされた文字列でwrite.csv na引数を使用して記述することができます。 テーブルを読み書きするための他のツールにも同様のオプションがあります。

異なるクラスのNAsの使用

記号NAは、 logical欠損値を示します。

class(NA)
#[1] "logical"

これは、他のアトミックベクトル型に強制的に変換することが容易であり、通常は必要な唯一のNAため、便利です。

x <- c(1, NA, 1)
class(x[2])
#[1] "numeric"

別のタイプの単一のNA値が必要な場合は、 NA_character_NA_integer_NA_real_またはNA_complex_ます。ファンシークラスの欠損値については、通常NA_integer_でサブセット化します。たとえば、欠損値を取得するDate:

class(Sys.Date()[NA_integer_])
# [1] "Date"

TRUE / FALSEおよび/またはNA

NA論理型との論理演算子であるNA戻りますNA結果があいまいである場合。以下は、 NA OR TRUEと評価されTRUE少なくとも一面があると評価するのでTRUE 、しかしNA OR FALSEを返すNA我々がいるかどうかわからないのでNAあったであろうTRUEまたはFALSE

NA | TRUE
# [1] TRUE  
# TRUE | TRUE is TRUE and FALSE | TRUE is also TRUE.

NA | FALSE
# [1] NA  
# TRUE | FALSE is TRUE but FALSE | FALSE is FALSE.

NA & TRUE
# [1] NA  
# TRUE & TRUE is TRUE but FALSE & TRUE is FALSE.

NA & FALSE
# [1] FALSE
# TRUE & FALSE is FALSE and FALSE & FALSE is also FALSE.

これらのプロパティーは、 NAを含むいくつかの列に基づいてデータ・セットをサブセット化する場合に役立ちます。

df <- data.frame(v1=0:9, 
                 v2=c(rep(1:2, each=4), NA, NA), 
                 v3=c(NA, letters[2:10]))

df[df$v2 == 1 & !is.na(df$v2), ]
#  v1 v2   v3
#1  0  1 <NA>
#2  1  1    b
#3  2  1    c
#4  3  1    d

df[df$v2 == 1, ]
     v1 v2   v3
#1     0  1 <NA>
#2     1  1    b
#3     2  1    c
#4     3  1    d
#NA   NA NA <NA>
#NA.1 NA NA <NA>

欠損値の省略または置換

欠損値の記録

通常、欠落しているデータはデータセットでNAとしてコード化されていません。例えば、SPSSでは、欠損値は値99表されることが多い。

num.vec <- c(1, 2, 3, 99, 5)
num.vec
## [1]  1  2  3 99  5

サブセッティングを使用してNAを直接割り当てることが可能です

num.vec[num.vec == 99] <- NA

しかし、以下のようにis.na<-を使用するのが好ましい方法です。ヘルプファイル( ?is.na )の状態:

is.na<-は、欠けを設定する安全な方法を提供するかもしれません。それは、例えば、要因に対して異なる挙動を示す。

is.na(num.vec) <- num.vec == 99

両方のメソッドが戻ります

num.vec
## [1]  1  2  3 NA  5

欠損値の削除

欠損値は、ベクトルからいくつかの方法で削除できます。

num.vec[!is.na(num.vec)]
num.vec[complete.cases(num.vec)]
na.omit(num.vec)
## [1] 1 2 3 5

計算から欠損値を除外する

欠損値を持つベクトルに対して算術関数を使用すると、欠損値が返されます。

mean(num.vec) # returns: [1] NA

na.rmパラメータは、関数にNA値を計算から除外するように指示します。

mean(num.vec, na.rm = TRUE) # returns: [1] 2.75

# an alternative to using 'na.rm = TRUE':
mean(num.vec[!is.na(num.vec)]) # returns: [1] 2.75

lmようないくつかのR関数には、 na.actionパラメータがあります。これのデフォルト値はna.omitですが、 options(na.action = 'na.exclude')ではRのデフォルトの動作を変更できます。

デフォルト動作を変更する必要はないが、特定の状況では別のna.actionが必要な場合は、 na.actionパラメータを関数呼び出しに含める必要があります。

 lm(y2 ~ y1, data = anscombe, na.action = 'na.exclude')


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow