为何会出现缺失数据?
- 机器断电,设备故障导致某个测量值发生了丢失。
- 测量根本没有发生,e.g.在做问卷调查时,有些问题没有回答,或者某些问题是无效的回答等。
缺失值NA——Not Available 存储缺失数据
≠0,不知道是多少值,可能是任何值(参考上一节cut()函数配图)
> NA==0
[1] NA
> NA+1
[1] NA
************************************NA:无法计算的存在值√
> a <- c(NA,1:49)
> a
[1] NA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
[28] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
> sum(a)
[1] NA
> mean(a)
[1] NA
- NA.RM=TRUE 除去NA值进行计算(反之/默认——如上图:NA.RM=FALSE)–remove
> sum(a,na.rm=TRUE)
[1] 1225
> mean(a,na.rm=T)
[1] 25
--------------
> mean(1:49) ***经验证得,NA.RM将NA值直接剔除,即个数减少 计算
[1] 25
> mean(1:50)
[1] 25.5
- IS.NA() 逻辑验证是否为NA 值,是则返回TRUE,不是则返回FALSE
> a
[1] NA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
[28] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
> is.na(a)
[1] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[14] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[27] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[40] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
R包的下载:在R 中下载——install.packages( )
> colSums(sleep) **列之和**
BodyWgt BrainWgt NonD Dream Sleep Span Gest Pred Exp
12324.98 17554.32 NA NA NA NA NA 178.00 150.00
Danger
162.00
> rowSums(sleep) **行之和**
[1] NA 77.700 NA NA 7862.800 428.650 96.723 776.800 152.900
[10] 794.560 163.825 1221.800 NA NA 66.575 129.200 79.685 163.000
[19] NA NA NA 333.260 55.820 NA 778.400 NA 77.701
[28] 110.540 1578.800 NA NA 53.445 117.060 1768.000 NA NA
[37] 57.023 65.978 67.800 179.600 NA 207.980 349.000 75.420 542.800
[46] 95.400 NA 61.280 139.035 405.000 264.250 274.400 NA 424.100
[55] NA NA 99.600 239.600 89.504 327.790 67.200 NA
- NA.OMIT( ) 除去NA值
> c <- c(NA,1:20)
> d <- na.omit(c)
> d
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
attr(,"na.action")
[1] 1
attr(,"class")
[1] "omit"
> is.na(d)
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[14] FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> sum(d)
[1] 210
对数据集——删除包含NA值的行→可能对结果产生较大影响
> length(rownames(sleep)) **计算行数length(rownames/colnames)
[1] 62
> length(rownames(na.omit(sleep)))
[1] 42
其他缺失数据
- NaN 表示不可能的值
- lnf 无穷(正无穷lnf和负无穷lnf)
> 1/0
[1] Inf
> -1/0
[1] -Inf
> 0/0
[1] NaN
缺失数据之间的差别
- NA 是存在的值,但是不知道是多少
- NaN 是不存在的
- lnf存在,是无穷大/小,但是表示不可能的值
> is.nan(0/0)
[1] TRUE
> is.infinite(1/0)
[1] TRUE