#####缺失值判断以及处理######举例1:向量类型判断缺失值is.na和缺失值的填补which(x<-c(1,2,3,NA))is.na(x)  #返回一个逻辑向量,TRUE为缺失值,FALSE为非缺失值table(is.na(x))  #统计分类个数sum(x)  #当向量存在缺失值的时候统计结果也是缺失值sum(x,na.rm = TRUE)  #很多函数里都有na.rm=TRUE参数,此参数可以在运算时移除缺失值(x[which(is.na(x))]<-0)  #可以用which()函数代替缺失值,which()函数返回符合条件的响应位置#举例2:数据框类型判断缺失值is.na、缺失值的填补which、缺失值所在行的删除na.omit(test<-data.frame(x=c(1,2,3,4,NA),y=c(6,7,NA,8,9)))is.na(test)  #test中空值的判断which(is.na(test),arr.ind = T)  #arr.ind=T可以返回缺失值的相应行列坐标test[which(is.na(test),arr.ind = T)]<-0 #结合which进行缺失替代(test_omit<-na.omit(data.frame(x=c(1,2,3,4,NA),y=c(6,7,NA,8,9))))  #na.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<-nhanes2sub<-which(is.na(newnhanes2[,4]))  #返回newnhanes2数据集中第4列NA的行标识datatr<-newnhanes2[-sub,]  #方法一:将第4列不为NA的数存入数据集datatr中datatr<-newnhanes2[complete.cases(newnhanes2[,4]),]  #方法二:将第4列不为NA的数存入数据集datatr中datate<-newnhanes2[sub,]  #方法一:将第4列为NA的数存入数据集datate中datate<-newnhanes2[is.na(newnhanes2[,4]),]  #方法二:将第4列为NA的数存入数据集datate中fit<-lm(chl~age,data = datatr)  #利用datatr中age为自变量,chl为因变量构建线性回归模型lmnewnhanes2[sub,4]<-round(predict(fit,datate))  #利用datate中数据按照模型fit对nhanes2中chl中的缺失数据进行预测#举例7:缺失值随机森林插补library(missForest)z<-missForest(airquality)  #用随机森林迭代弥补缺失值air.full<-z$ximpzz<-missForest(nhanes2)nhanes2.full<-zz$ximp#举例8:线性回归模型插补mice::md.pattern(airquality)index1<-is.na(airquality$Ozone) #对Ozone变量进行缺失值处理dput(colnames(airquality))  #求出变量列名称Ozone_train<-airquality[!index1,c("Ozone", "Wind", "Temp", "Month", "Day")] #训练集,需注意什么时候用!,什么时候用-Ozone_test<-airquality[index1,c("Ozone", "Wind", "Temp", "Month", "Day")] #测试集fit<-lm(Ozone~.,data = Ozone_train) #建立线性回归模型summary(fit)airquality[index1,"Ozone"]<-predict(fit,newdata =Ozone_test )index2<-is.na(airquality$Solar.R)  #Solar.R变量进行缺失值处理,Ozone变量数据已补齐Solar.R_train<-airquality[!index2,]  #训练集Solar.R_test<-airquality[index2,]  #测试集Solar.R_fit<-lm(Solar.R~.,data = Solar.R_train)summary(Solar.R_fit)airquality[index2,"Solar.R"]<-predict(Solar.R_fit,newdata = Solar.R_test)mice::md.pattern(airquality)#knn和bag缺失值插补(利用caret包中的preProcess函数,method参数有多种方式可选)question<-read.csv("问卷调研数据.csv")question<-question[,-1]str(question)for(i in 1:ncol(question)){question[,i]<-as.factor(question[,i])}  #批量修改为因子类型str(question)#举例9:利用KNN算法进行缺失值插补(只能对数值型变量处理)question<-read.csv("问卷调研数据.csv")question<-question[,-1]mice::md.pattern(question)  #列表缺失值探索library(caret)knn.model<-preProcess(question,method = "knnImpute") #KNN处理数值型数据(欧式距离),不能处理因子型数据question1<-predict(knn.model,newdata = question)install.packages("RANN")mice::md.pattern(question1)table(question1$性别)  #不是之前的1和2了table(question$性别)#最后结果:knn不适合处理该数据,需要做哑变量处理,再套模型#举例10:利用袋装算法进行缺失值插补(只能对数值型变量处理)question<-read.csv("问卷调研数据.csv")question<-question[,-1]  mice::md.pattern(question) #列表缺失值探索library(caret)bag.model<-preProcess(question,method = "bagImpute") #bag算法模型建立install.packages("ipred")question2<-predict(bag.model,question) #预测结果mice::md.pattern(question2)  #列表缺失值探索table(question2$性别)#最后结果:bag算法不适合处理该数据

R语言-缺失值判断以及处理相关推荐

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

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

  2. R语言缺失值替换:缺失的值(NA)替换每个分组最近的非缺失值

    R语言缺失值替换:缺失的值(NA)替换每个分组最近的非缺失值 目录 R语言缺失值替换:缺失的值(NA)替换每个分组最近的非缺失值

  3. R语言缺失值:is.na函数查看数据对象中是否包含缺失值NA、特定数据编码为编码为缺失值NA、na.rm=TRUE参数获得有效的计算结果、complete.cases函数筛选数据、na.omit函数

    R语言缺失值:is.na函数查看数据对象中是否包含缺失值NA.特定数据编码为编码为缺失值NA.na.rm=TRUE参数获得有效的计算结果.complete.cases函数筛选数据.na.omit函数 ...

  4. R语言条件判断语句编程:使用if/else语句实现条件逻辑判断、使用all函数判断向量中的值是否全部都满足条件

    R语言条件判断语句编程:使用if/else语句实现条件逻辑判断.使用all函数判断向量中的值是否全部都满足条件 目录

  5. R语言条件判断语句编程:使用嵌套(一串)if/else语句实现条件逻辑判断、并对指定变量进行条件赋值

    R语言条件判断语句编程:使用嵌套(一串)if/else语句实现条件逻辑判断.并对指定变量进行条件赋值 目录

  6. R语言缺失值插补之simputation包

    获取更多R语言和生信知识,请欢迎关注公众号:医学和生信笔记 医学和生信笔记 公众号主要分享:1.医学小知识.肛肠科小知识:2.R语言和Python相关的数据分析.可视化.机器学习等:3.生物信息学学习 ...

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

    #####缺失值判断以及处理##### #举例1:向量类型判断缺失值is.na和缺失值的填补which (x is.na(x)  #返回一个逻辑向量,TRUE为缺失值,FALSE为非缺失值 table ...

  8. R语言中判断是否是整数。以及读写excel

    今天接手一个重复性工作, 需要手工把产品运营们在excel里写的活动规则, 插入数据库表中.为了减少出错, 提高效率. 再加上最近刚刚学R语言, 就用R练练手, 自动生成mysql的sql语句. 一次 ...

  9. R语言︱缺失值处理之多重插补——mice包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:缺失值是数据清洗过程中非常重要的问题 ...

  10. r语言中判断属于回纹元素_R语言中的回归诊断-- car包

    如何判断我们的线性回归模型是正确的? 1.回归诊断的基本方法 opar fit par(mfrow = c(2, 2)) plot(fit) par(opar) 为理解这些图形,我们来回顾一下OLS回 ...

最新文章

  1. 口令红包 java,[1.7.2]Gifts — 我的世界服务器在线礼物和登陆奖励插件
  2. 架构必备「RESTful API」设计技巧经验总结
  3. Apache的虚拟主机配置
  4. 如何将函数的实际参数转换成数组
  5. 【转载】#323 - A Generic Class is a Template for a Class
  6. VS2015 vc++ 项目出现new.h找不到的错误
  7. DVWA Cross Site Request Forgery (CSRF) -------WP
  8. Shell脚本之七 选择、循环结构
  9. C++中获得文件大小
  10. Java学生管理系统-增删改查
  11. React组件通信-父子组件间的通信
  12. Python批量处理lrmx格式文档内指定内容
  13. 合工大机器人足球仿真考试题56题(底层uva)
  14. Code Snippets 使用
  15. 解决win11/win10在登陆界面(解锁界面)点击获取每日壁纸无效的问题 - get Daily Lockscreen and Wallpaper - Win11/10的登录界面背景图片在哪里?
  16. Python练级打怪全攻略——从上手到走出新手村
  17. 毕业设计 STM32自动泊车系统 - 智能小车 自动停车
  18. Python+pytest+requests 自动化测试框架
  19. 三相四线插座,三相四线制,三相五线制
  20. 实验楼Java写计算器_Java版图形界面计算器

热门文章

  1. 稳压二极管的原理和伏安特性
  2. CDR 制作“决战高考”海报
  3. mysql 向上取整_mysql的取整函数
  4. a12处理器怎么样_苹果新一代iPhone A12仿生处理器怎么样
  5. 关于芯片、CPU的区别的简单理解
  6. [转]在创业公司做架构师,你需要解决哪些问题?
  7. vue项目中使用ramda库
  8. Java实现微信公众号授权登录
  9. 如何高效的自学编程(新手篇)
  10. 按键精灵开发传奇手游教程-现在比较火的美杜莎传奇为例