识别缺失值

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

相关文章
相关标签/搜索