識別缺失值

a、NA:缺失值函數

b、NaN:不是一個數,表明不可能值spa

c、Inf,-Inf:分別表明正無窮、負無窮code

                      is.na()、is.nan()和is.infinite()函數返回值實例對象

X is.na(X) is.nan(X) is.infinite(X)表示無窮值
X <- NA  TRUE FALSE FLASE
X <- 0/0 TRUE TRUE FLASE
X <- 1/0 FLASE FLASE TRUE

 

> y <- c(1,2,3,NA)
> is.na(y)
[1] FALSE FALSE FALSE  TRUE
> data(sleep,package='VIM')      #加載數據
> sleep[complete.cases(sleep),]  #列出沒有缺失值的行
    BodyWgt BrainWgt NonD Dream Sleep  Span  Gest Pred Exp Danger
2     1.000     6.60  6.3   2.0   8.3   4.5  42.0    3   1      3
5  2547.000  4603.00  2.1   1.8   3.9  69.0 624.0    3   5      4
6    10.550   179.50  9.1   0.7   9.8  27.0 180.0    4   4      4
#太長,刪除過多輸出
        
> sleep[!complete.cases(sleep),] #列出一個或者多個缺失值的行
    BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp Danger
1  6654.000   5712.0   NA    NA   3.3 38.6  645    3   5      3
3     3.385     44.5   NA    NA  12.5 14.0   60    1   1      1
4     0.920      5.7   NA    NA  16.5   NA   25    5   2      3
#太長,刪除過多輸出

> sum(is.na(sleep$Dream))  #計算缺失值個數
[1] 12
> mean(is.na(sleep$Dream)) #19%的實例在此變量上有缺失值
[1] 0.1935484
> mean(!complete.cases(sleep)) #數據集中32%的實例包含一個或者多個缺失值
[1] 0.3225806

 

注意it

a、complete.cases() 函數僅將 NA 和 NaN 識別爲缺失值,無窮值( Inf 和 -Inf )被看成有效值table

b、必須使用與本章中相似的缺失值函數來識別 R 數據對象中的缺失值,像 myvar == NA 這樣的邏輯比較沒法實現變量

相關文章
相關標籤/搜索