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 这样的逻辑比较没法实现变量