美文网首页基本图形绘制RR语言学习
R语言学习笔记(8)-缺失数据

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

作者: Akuooo | 来源:发表于2021-01-21 12:14 被阅读0次

    参考: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
    

    相关文章

      网友评论

        本文标题:R语言学习笔记(8)-缺失数据

        本文链接:https://www.haomeiwen.com/subject/izvrzktx.html