R语言缺失值判断与处理-2

本文介绍了在R语言中如何处理数据框中的缺失值。首先,通过is.na()函数判断缺失值,使用which()获取其位置,na.omit()删除含有缺失值的行。接着,统计缺失值数量,计算忽略缺失值后的统计量。此外,还展示了使用回归模型进行缺失值插补的步骤,包括创建训练集和测试集,建立回归模型并预测缺失值。
摘要由CSDN通过智能技术生成

R语言-缺失值判断以及处理
上次说了关于某个固定值,异常值,缺失值等的固定位置,今天详细说下如果数据列中出现缺失值,该如何处理。
向量组中的不说了,一般实践都是数据框。

1.数据框缺失值判断

  • 数据框类型判断缺失值is.na、缺失值的填补which、缺失值所在行的删除na.omit
  • 1.数据列
  • 2.判断is.na()
  • 3.对应行列位置which(arr.ind = T)
  • 4.删除na.omit
  • 5.统计缺失值数量sum,mean,table
  • 6.计算忽略(平均值,求和,sd,se等等)na.rm=TRUE
#1
> (test<-data.frame(x=c(1,2,3,4,NA),y=c(6,7,NA,8,9)))
   x  y
1  1  6
2  2  7
3  3 NA
4  4  8
5 NA  9
#2
> is.na(test)  #test中空值的判断
         x     y
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] FALSE  TRUE
[4,] FALSE FALSE
[5,]  TRUE FALSE
#3
> which(is.na(test),arr.ind = T)  #arr.ind=T可以返回缺失值的相应行列坐标
     row col
[1,]   5   1
[2,]   3   2
#4
> (test_omit<-na.omit(test))  #na.omit函数可以直接删除值所在的行
  x y
1 1 6
2 2 7
4 4 8
#5
> sum(test$x)
[1] NA
> sum(test$x, na.rm = TRUE)
[1] 10
#6 统计缺失值个数
> table(is.na(test))
FALSE  TRUE 
    8     2 
> sum(is.na(test))
[1] 2
> mean(is.na(test))
[1] 0.2

2.缺失值插补—回归模型

  • 1.判断位置
  • 2.新学一个代码dput
  • 3.非空值数据集,空值数据集
  • 4.回归建模
  • 5.赋值拟合数据值
#1
index1<-is.na(airquality$Ozone);index1 #对Ozone变量进行缺失值处理
  [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [19] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
 #
 #2
> aa <- dput(colnames(airquality));aa #求出变量列名称
c("Ozone", "Solar.R", "Wind", "Temp", "Month", "Day")

#3
> Ozone_train<-airquality[!index1,c("Ozone", "Wind", "Temp", "Month", "Day")] #训练集,非空值
> Ozone_train
    Ozone Wind Temp Month Day
1      41  7.4   67     5   1
2      36  8.0   72     5   2
3      12 12.6   74     5   3
> Ozone_test<-airquality[index1,c("Ozone", "Wind", "Temp", "Month", "Day")] #测试集,空值
> Ozone_test
    Ozone Wind Temp Month Day
5      NA 14.3   56     5   5
10     NA  8.6   69     5  10
25     NA 16.6   57     5  25
26     NA 14.9   58     5  26

#4
> fit<-lm(Ozone~.,data = Ozone_train) #建立线性回归模型
> summary(fit)

Call:
lm(formula = Ozone ~ ., data = Ozone_train)

Residuals:
    Min      1Q  Median      3Q     Max 
-42.540 -12.582  -2.989  10.460  99.807 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -70.1051    23.7929  -2.946  0.00392 ** 
Wind         -3.0516     0.6499  -4.696 7.65e-06 ***
Temp          2.0984     0.2653   7.909 2.10e-12 ***
Month        -3.5209     1.4932  -2.358  0.02012 *  
Day           0.2747     0.2297   1.196  0.23434    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.41 on 111 degrees of freedom
Multiple R-squared:  0.5934,	Adjusted R-squared:  0.5788 
F-statistic: 40.51 on 4 and 111 DF,  p-value: < 2.2e-16

#5
airquality[index1,"Ozone"]<-predict(fit,newdata =Ozone_test )

看完如果对你有帮助,感谢点赞支持!
如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]

请添加图片描述

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值