美文网首页
初识R语言—缺失值处理和转换函数

初识R语言—缺失值处理和转换函数

作者: 超级无敌大蜗牛 | 来源:发表于2020-04-02 23:14 被阅读0次

from 阿雷边学边教

缺失值NA(Not Available)

  • 数据源中缺少的数据
  • 由于记录错误产生了一些不符合常理的值
    **处理缺失值的方法
  • 判断是否为缺失值:is.na()
  • 对于不符合常理的值定义为缺失值:
    df$column[df$column==value] <- NA
  • 替换掉缺失值:df[is.na(df)] <- value
  • 排除缺失值:1.有些函数自带的na.rm=TRUE选项;2.na.omit()可以将含有缺失值的一整行都移除掉,此函数请慎用。
> ID <- paste("A","00",1:5,sep = "")
> age <- c(24,NA,35,19,-20)
> df1<-data.frame(ID,age)
> df1
    ID age
1 A001  24
2 A002  NA
3 A003  35
4 A004  19
5 A005 -20

#判断有无缺失值
> is.na(df1)
        ID   age
[1,] FALSE FALSE
[2,] FALSE  TRUE
[3,] FALSE FALSE
[4,] FALSE FALSE
[5,] FALSE FALSE

#将不符合常理的值定义为缺失值
> df1$age[df1$age<0]<-NA
> df1
    ID age
1 A001  24
2 A002  NA
3 A003  35
4 A004  19
5 A005  NA

#替换掉缺失值
> df1[is.na(df1)] <- mean(df1$age)
> df1
    ID age
1 A001  24
2 A002  NA
3 A003  35
4 A004  19
5 A005  NA
##替换失败是因为在求平均值的时候是以原来所有age为基数的,而实际上这些数字里面有缺失值NA,所以mean值替换失败,如果需要达到将NA值替换为mean值的目的,则需要将NA删除,代码如下:
> df1[is.na(df1)] <- mean(df1$age,na.rm = T)
> df1
    ID age
1 A001  24
2 A002  26
3 A003  35
4 A004  19
5 A005  26
> df1<-data.frame(ID,age)
> na.omit(df1)
    ID age
1 A001  24
3 A003  35
4 A004  19
5 A005 -20

相关文章

网友评论

      本文标题:初识R语言—缺失值处理和转换函数

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