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 這樣的邏輯比較沒法實現變量