美文网首页
缺失值的处理(基于R语言)

缺失值的处理(基于R语言)

作者: 北欧森林 | 来源:发表于2020-12-31 03:17 被阅读0次
    Part 1. basic skills
    • In R, missing values are represented by the symbol NA (not available).
    • Impossible values (e.g., dividing by zero) are represented by the symbol NaN (not a number).
    • Unlike SAS, R uses the same symbol for character and numeric data.

    Testing for Missing Values

    is.na(x) # returns TRUE if x is missing
    
    y <- c(1,2,3,NA)
    is.na(y) # returns a vector (F F F T)
    

    Recoding Values to Missing

    mydata$v1[mydata$v1==99] <- NA
    # recode 99 to missing for variable v1
    # select rows where v1 is 99 and recode column v1
    

    Excluding Missing Values from Analyses
    Arithmetic functions on missing values yield missing values.

    x <- c(1,2,NA,3)
    mean(x) # returns NA
    mean(x, na.rm=TRUE) # returns 2
    

    The function complete.cases() returns a logical vector indicating which cases are complete.

    # list rows of data that have missing values
    mydata[!complete.cases(mydata),]
    

    The function na.omit() returns the object with listwise deletion of missing values.

    # create new dataset without missing data
    newdata <- na.omit(mydata)
    
    Part 2: 进阶

    2.1 判断数据有多少缺失值

     sum(is.na(mydata$week))
    # [1] 1686
    

    2.2 mice包中的md.pattern()函数可以生成一个以矩阵或数据框形式展示缺失值模式的表格。

    library(mice)
    md.pattern(sleep)
    
    # Output:
    #    BodyWgt BrainWgt Pred Exp Danger Sleep Span Gest Dream NonD   
    # 42       1        1    1   1      1     1    1    1     1    1  0
    # 9        1        1    1   1      1     1    1    1     0    0  2
    # 3        1        1    1   1      1     1    1    0     1    1  1
    # 2        1        1    1   1      1     1    0    1     1    1  1
    # 1        1        1    1   1      1     1    0    1     0    0  3
    # 1        1        1    1   1      1     1    0    0     1    1  2
    # 2        1        1    1   1      1     0    1    1     1    0  2
    # 2        1        1    1   1      1     0    1    1     0    0  3
    #          0        0    0   0      0     4    4    4    12   14 38
    
    NAFig1.png

    解读:0 表示变量的列中没有缺失,1 则表示有缺失值。
    第一行给出了没有缺失值的数目(共多少行)。
    第一列表示各缺失值模式的总数。
    最后一行给出了每个变量的缺失值数目。

    最后一列给出了缺失的变量的数目(这些变量存在缺失值)。
    第一列的数字和对应的最后一列数字相乘再求和,即为缺失值总数。
    Sleep这个数据集中,总共有38个数据缺失(显示在右下角)。

    2.3 缺失值可视化

    library(VIM)
    aggr(sleep,prop=F,numbers=T)
    
    NAFig2.jpg
    matrixplot(sleep)
    
    NAFig3.png

    浅色表示值小,深色表示值大,默认缺失值为红色。

    2.4 删除含有缺失值的行的函数有na.omit()complete.cases()。注意返回结果不同。

    newdata1 <- na.omit(sleep) #返回 values
    newdata2 <- sleep[complete.cases(sleep),] # 返回数据框
    
    参考资料:

    Quick-R: Missing Data
    知乎博主@斑马R语言缺失值处理

    相关文章

      网友评论

          本文标题:缺失值的处理(基于R语言)

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