r语言查找是否存在空值_R语言-缺失值判断以及处理

本文介绍了R语言中处理缺失值的各种方法,包括使用is.na进行判断,通过which和na.omit删除缺失值,使用mice和missForest进行插补,以及利用KNN和bagging算法处理数值型变量的缺失值。同时,文章提供了多个示例展示如何在不同数据类型上操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#####缺失值判断以及处理#####

#举例1:向量类型判断缺失值is.na和缺失值的填补which

(x

is.na(x)  #返回一个逻辑向量,TRUE为缺失值,FALSE为非缺失值

table(is.na(x))  #统计分类个数

sum(x)  #当向量存在缺失值的时候统计结果也是缺失值

sum(x,na.rm = TRUE)  #很多函数里都有na.rm=TRUE参数,此参数可以在运算时移除缺失值

(x[which(is.na(x))]

#举例2:数据框类型判断缺失值is.na、缺失值的填补which、缺失值所在行的删除na.omit

(test

is.na(test)  #test中空值的判断

which(is.na(test),arr.ind = T)  #arr.ind=T可以返回缺失值的相应行列坐标

test[which(is.na(test),arr.ind = T)]

(test_omit

#举例3:识别缺失值的基本语法汇总

str(airquality)

complete.cases(airquality)  #判断个案是否有缺失值

airquality[complete.cases(airquality),]  #列出没有缺失值的行

nrow(airquality[complete.cases(airquality),])  #计算没有缺失值的样本量

airquality[!complete.cases(airquality),]  #列出有缺失的值的行

nrow(airquality[!complete.cases(airquality),])  #计算有缺失值的样本量

is.na(airquality$Ozone)  #TRUE为缺失值,FALSE为非缺失值

table(is.na(airquality$Ozone))

complete.cases(airquality$Ozone)  #FALSE为缺失值,TRUE为非缺失值

table(complete.cases(airquality$Ozone))

#可用sum()和mean()函数来获取关于缺失数据的有用信息

sum(is.na(airquality$Ozone))  #查看缺失值的个数

sum(complete.cases(airquality$Ozone))  #查看没有缺失值的个数

mean(is.na(airquality$Ozone))  #查看缺失值的占比

mean(is.na(airquality))  #查看数据集airquality中样本有缺失值的占比

#举例4:探索缺失值模式

#列表缺失值探索

library(mice)

md.pattern(airquality)

#图形缺失值探索

library(VIM)

aggr(airquality,prop=FALSE,number=TRUE)

aggr(airquality,prop=TRUE,number=TRUE) #生成相同的图形,但用比例代替了计数

aggr(airquality,prop=FALSE,number=FALSE)  #选项numbers = FALSE(默认)删去数值型标签

#举例5:删除缺失值

airquality[complete.cases(airquality),] #方法一:删除缺失值行

na.omit(airquality) #方法二:删除缺失值的行

#举例6:缺失值回归模型插补

newnhanes2

sub

datatr

datatr

datate

datate

fit

newnhanes2[sub,4]

#举例7:缺失值随机森林插补

library(missForest)

z

air.full

zz

nhanes2.full

#举例8:线性回归模型插补

mice::md.pattern(airquality)

index1

dput(colnames(airquality))  #求出变量列名称

Ozone_train

Ozone_test

fit

summary(fit)

airquality[index1,"Ozone"]

index2

Solar.R_train

Solar.R_test

Solar.R_fit

summary(Solar.R_fit)

airquality[index2,"Solar.R"]

mice::md.pattern(airquality)

#knn和bag缺失值插补(利用caret包中的preProcess函数,method参数有多种方式可选)

question

question

str(question)

for(i in 1:ncol(question)){

question[,i]

}  #批量修改为因子类型

str(question)

#举例9:利用KNN算法进行缺失值插补(只能对数值型变量处理)

question

question

mice::md.pattern(question)  #列表缺失值探索

library(caret)

knn.model

question1

install.packages("RANN")

mice::md.pattern(question1)

table(question1$性别)  #不是之前的1和2了

table(question$性别)

#最后结果:knn不适合处理该数据,需要做哑变量处理,再套模型

#举例10:利用袋装算法进行缺失值插补(只能对数值型变量处理)

question

question

mice::md.pattern(question) #列表缺失值探索

library(caret)

bag.model

install.packages("ipred")

question2

mice::md.pattern(question2)  #列表缺失值探索

table(question2$性别)

#最后结果:bag算法不适合处理该数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值