基本图形绘制RR语言学习

R语言学习笔记(8)-缺失数据

2021-01-21  本文已影响0人  Akuooo

参考:https://www.bilibili.com/video/BV19x411X7C6?p=24

一、缺失数据

  1. 分类
    (1)完全随机缺失(MCAR):某变量随机缺失数据与其他任何观测或未观测变量都不相关,则数据完全确实。
    (2)随机缺失(MAR):某变量的缺失数据与其他已观测变量相关,与自己未观测值不相关。
    (3)非随机缺失(NMAR)

  2. 为何出现缺失数据
    (1)机器断电,设备故障导致某观测值丢失
    (2)测量未发生,如调查问卷时,有些问题没有回答or无效回答等

  3. 缺失值NA(not available)
    NA 表示没有,但不一定为0,与零完全不同。

> 1+NA
[1] NA

但当数据中包括NA时,则不方便计算。如sum,最终值是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 27
[29] 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
> sum(a,na.rm = TRUE)
[1] 1225
#计算平均值时是以49个数处理,还是50个呢?
> mean(a,na.rm = TRUE)
[1] 25
> mean(1:49)
[1] 25
> mean(1:50)
[1] 25.5//可看出是49个

在处理数据时,需要先查看数据中是否有NA存在-is.na()

> is.na(a)//若返回值为TRUE,则存在NA
 [1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[15] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[29] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[43] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

测试VIM包中的sleep数据集:

#安装加载sleep
>install.packages("VIM")
> library(VIM)
载入需要的程辑包:colorspace
载入需要的程辑包:grid
VIM is ready to use.

Suggestions and bug-reports can be submitted at: https://github.com/statistikat/VIM/issues

载入程辑包:‘VIM’

The following object is masked from ‘package:datasets’:

    sleep

> sleep
    BodyWgt BrainWgt NonD Dream Sleep  Span  Gest Pred Exp Danger
1  6654.000  5712.00   NA    NA   3.3  38.6 645.0    3   5      3
2     1.000     6.60  6.3   2.0   8.3   4.5  42.0    3   1      3
3     3.385    44.50   NA    NA  12.5  14.0  60.0    1   1      1
4     0.920     5.70   NA    NA  16.5    NA  25.0    5   2      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
7     0.023     0.30 15.8   3.9  19.7  19.0  35.0    1   1      1
8   160.000   169.00  5.2   1.0   6.2  30.4 392.0    4   5      4
9     3.300    25.60 10.9   3.6  14.5  28.0  63.0    1   2      1
10   52.160   440.00  8.3   1.4   9.7  50.0 230.0    1   1      1
11    0.425     6.40 11.0   1.5  12.5   7.0 112.0    5   4      4
12  465.000   423.00  3.2   0.7   3.9  30.0 281.0    5   5      5
13    0.550     2.40  7.6   2.7  10.3    NA    NA    2   1      2
14  187.100   419.00   NA    NA   3.1  40.0 365.0    5   5      5
15    0.075     1.20  6.3   2.1   8.4   3.5  42.0    1   1      1
16    3.000    25.00  8.6   0.0   8.6  50.0  28.0    2   2      2
17    0.785     3.50  6.6   4.1  10.7   6.0  42.0    2   2      2
18    0.200     5.00  9.5   1.2  10.7  10.4 120.0    2   2      2
19    1.410    17.50  4.8   1.3   6.1  34.0    NA    1   2      1
20   60.000    81.00 12.0   6.1  18.1   7.0    NA    1   1      1
21  529.000   680.00   NA   0.3    NA  28.0 400.0    5   5      5
22   27.660   115.00  3.3   0.5   3.8  20.0 148.0    5   5      5
23    0.120     1.00 11.0   3.4  14.4   3.9  16.0    3   1      2
24  207.000   406.00   NA    NA  12.0  39.3 252.0    1   4      1
25   85.000   325.00  4.7   1.5   6.2  41.0 310.0    1   3      1
26   36.330   119.50   NA    NA  13.0  16.2  63.0    1   1      1
27    0.101     4.00 10.4   3.4  13.8   9.0  28.0    5   1      3
28    1.040     5.50  7.4   0.8   8.2   7.6  68.0    5   3      4
29  521.000   655.00  2.1   0.8   2.9  46.0 336.0    5   5      5
30  100.000   157.00   NA    NA  10.8  22.4 100.0    1   1      1
31   35.000    56.00   NA    NA    NA  16.3  33.0    3   5      4
32    0.005     0.14  7.7   1.4   9.1   2.6  21.5    5   2      4
33    0.010     0.25 17.9   2.0  19.9  24.0  50.0    1   1      1
34   62.000  1320.00  6.1   1.9   8.0 100.0 267.0    1   1      1
35    0.122     3.00  8.2   2.4  10.6    NA  30.0    2   1      1
36    1.350     8.10  8.4   2.8  11.2    NA  45.0    3   1      3
37    0.023     0.40 11.9   1.3  13.2   3.2  19.0    4   1      3
38    0.048     0.33 10.8   2.0  12.8   2.0  30.0    4   1      3
39    1.700     6.30 13.8   5.6  19.4   5.0  12.0    2   1      1
40    3.500    10.80 14.3   3.1  17.4   6.5 120.0    2   1      1
41  250.000   490.00   NA   1.0    NA  23.6 440.0    5   5      5
42    0.480    15.50 15.2   1.8  17.0  12.0 140.0    2   2      2
43   10.000   115.00 10.0   0.9  10.9  20.2 170.0    4   4      4
44    1.620    11.40 11.9   1.8  13.7  13.0  17.0    2   1      2
45  192.000   180.00  6.5   1.9   8.4  27.0 115.0    4   4      4
46    2.500    12.10  7.5   0.9   8.4  18.0  31.0    5   5      5
47    4.288    39.20   NA    NA  12.5  13.7  63.0    2   2      2
48    0.280     1.90 10.6   2.6  13.2   4.7  21.0    3   1      3
49    4.235    50.40  7.4   2.4   9.8   9.8  52.0    1   1      1
50    6.800   179.00  8.4   1.2   9.6  29.0 164.0    2   3      2
51    0.750    12.30  5.7   0.9   6.6   7.0 225.0    2   2      2
52    3.600    21.00  4.9   0.5   5.4   6.0 225.0    3   2      3
53   14.830    98.20   NA    NA   2.6  17.0 150.0    5   5      5
54   55.500   175.00  3.2   0.6   3.8  20.0 151.0    5   5      5
55    1.400    12.50   NA    NA  11.0  12.7  90.0    2   2      2
56    0.060     1.00  8.1   2.2  10.3   3.5    NA    3   1      2
57    0.900     2.60 11.0   2.3  13.3   4.5  60.0    2   1      2
58    2.000    12.30  4.9   0.5   5.4   7.5 200.0    3   1      3
59    0.104     2.50 13.2   2.6  15.8   2.3  46.0    3   2      2
60    4.190    58.00  9.7   0.6  10.3  24.0 210.0    4   3      4
61    3.500     3.90 12.8   6.6  19.4   3.0  14.0    2   1      1
62    4.050    17.00   NA    NA    NA  13.0  38.0    3   1      1
> is.na(sleep)
nasleep.png
#colSums和rowSums计算行数和列数
> colSums(sleep)
 BodyWgt BrainWgt     NonD    Dream    Sleep     Span     Gest     Pred      Exp   Danger 
12324.98 17554.32       NA       NA       NA       NA       NA   178.00   150.00   162.00 
> rowSums(sleep)
 [1]       NA   77.700       NA       NA 7862.800  428.650   96.723  776.800  152.900  794.560  163.825
[12] 1221.800       NA       NA   66.575  129.200   79.685  163.000       NA       NA       NA  333.260
[23]   55.820       NA  778.400       NA   77.701  110.540 1578.800       NA       NA   53.445  117.060
[34] 1768.000       NA       NA   57.023   65.978   67.800  179.600       NA  207.980  349.000   75.420
[45]  542.800   95.400       NA   61.280  139.035  405.000  264.250  274.400       NA  424.100       NA
[56]       NA   99.600  239.600   89.504  327.790   67.200       NA
#去掉数据集中的缺失值,生成一个没有缺失值的数据集,可用na.omit()
> ?na.omit
> na.omit(sleep)//将包含NA的行都删除掉
处理NA.png
naomitsleep.png

但是如果缺失值过多,直接使用na.omit可能会对结果又影响

> length(rownames(sleep))
[1] 62
> length(rownames(na.omit(sleep)))
[1] 42
处理NA方法.png

二、其他缺失数据

  1. 缺失数据NaN,代表不可能的值
  2. Inf表示无穷,分为正无穷Inf和负无穷Inf,代表无穷大无穷小

差别:
NA为存在的值,但不知道是多少;
NaN是不存在的值;
Inf存在,无穷大or小,但是表示不可能的值

识别NaN、lnf

> is.nan(0/0)
[1] TRUE
> is.infinite(1/0)
[1] TRUE
上一篇下一篇

猜你喜欢

热点阅读