缺失值处理包括两个步骤,即缺失数据的识别和缺失值处理。在R语言总缺失值以NA表示,可以使用函数is.na()判断缺失值是否存在,函数complete.cases()可识别样本数据是否完整从而判断缺失情况。缺失值处理常用方法有删除法、替换法、插补法。

  (1)删除法:可分为删除观测样本与删除变量。

  删除观测样本通过na.omit()函数移除所有含有缺失数据的行,属于以减少样本量来换取信息完整性的方法,适用于缺失值所含比例较小的情况。

  删除变量通过data[,-p]函数移除含有缺失数据的列,适用于变量有较大缺失且对研究目标影响不大的情况。

  缺点:会存在信息浪费的问题,且数据结构会发生变动,以致最后得到有偏的统计结构

  (2)替换法:变量按属性可分为数值型和非数值型

  缺失数据为数值型的一般用该变量在其他对象的取值均值来替换变量的缺失值

  缺失数据为非数值型的一般用其他全部有效观测值的中位数或者众数来替换

  缺点:会存在信息浪费的问题,且数据结构会发生变动,以致最后得到有偏的统计结构

  (3)插补法:常用的插补方法有回归插补,多重插补

  回归插补:利用回归模型,将需要插补的变量作为因变量,其他相关变量作为自变量,通过回归函数lm()预测出因变量的值来对缺失变量进行补缺

  多重插补:是从一个包含缺失值的数据集中生成一组完整的数据,如此多次,从而产生缺失值的一组随机样本,R中的mice()函数可以用来进行多重插补。

# 设置工作空间
setwd("F:/数据及程序/chapter4/示例程序/data")
# 读取销售数据文件,提取标题行
inputfile <- read.csv('1.csv', header = TRUE)

# 变换变量名
inputfile <- data.frame(sales = inputfile$'销量', date = inputfile$'日期')

# 数据截取
inputfile <- inputfile[5:16, ]

# 缺失数据的识别
is.na(inputfile) # 判断是否存在缺失
n <- sum(is.na(inputfile)) # 输出缺失值个数

# 异常值识别
par(mfrow = c(1, 2)) # 将绘图窗口划为1行两列,同时显示两图
dotchart(inputfile$sales) # 绘制单变量散点图
boxplot(inputfile$sales, horizontal = TRUE) # 绘制水平箱形图

# 异常数据处理
inputfile$sales[5] = NA # 将异常值处理成缺失值
fix(inputfile) # 表格形式呈现数据

# 缺失值的处理
inputfile$date <- as.numeric(inputfile$date) # 将日期转换成数值型变量
sub <- which(is.na(inputfile$sales)) # 识别缺失值所在行数
inputfile1 <- inputfile[-sub, ] # 将数据集分成完整数据和缺失数据两部分
inputfile2 <- inputfile[sub, ]

# 行删除法处理缺失,结果转存
result1 <- inputfile1

# 均值替换法处理缺失,结果转存
avg_sales <- mean(inputfile1$sales) # 求变量未缺失部分的均值
inputfile2$sales <- rep(avg_sales,n) # 用均值替换缺失
result2 <- rbind(inputfile1, inputfile2) # 并入完成插补的数据

# 回归插补法处理缺失,结果转存
model <- lm(sales ~ date, data = inputfile1) # 回归模型拟合
inputfile2$sales <- predict(model, inputfile2) # 模型预测
result3 <- rbind(inputfile1, inputfile2)

# 多重插补法处理缺失,结果转存
library(lattice) # 调入函数包
library(MASS)
library(nnet)
library(mice) # 前三个包是mice的基础
imp <- mice(inputfile, m = 4) # 4重插补,即生成4个无缺失数据集
fit <- with(imp,lm(sales ~ date, data = inputfile)) # 选择插补模型
pooled <- pool(fit)
summary(pooled)
result4 <- complete(imp, action = 3) # 选择第三个插补数据集作为结果

  

转载于:https://www.cnblogs.com/liu-304711/p/7552180.html

R语言-数据清洗-缺失值处理相关推荐

  1. r语言中mpg数据_零基础生信入门第一课——R语言数据清洗,超详细讲解,建议收藏!...

    小伙伴们大家好!今天我要用一篇推文精要概括数据清洗中的最基本最关键的步骤,对于零基础的学员一定会有很大收获!数据清洗是完成一篇生信文章最基本但也是最终要的准备工作,如果不会数据清洗,就要错过很多优质数 ...

  2. R语言进行缺失值填充(Filling in missing values):使用R原生方法、data.table、dplyr等方案

    R语言进行缺失值填充(Filling in missing values):使用R原生方法.data.table.dplyr等方案 目录 R语言进行缺失值填充&#x

  3. R语言——数据清洗之缺失值处理

    数据清洗之缺失值--R语言 缺失值处理步骤: 1)识别缺失数据: 2)检查导致数据缺失的原因: 3)删除包含缺失值的实例或用合理的数值代替(插补)缺失值 缺失值数据的分类: 1)完全随机缺失:若某变量 ...

  4. R语言 数据清洗(缺失值处理、异常值处理)

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 详细内容为 <R语言游戏数据分析与挖掘>第五章学习笔记之数据清洗 5.2.1 缺失值处理  5.2.2 异常值处理: setwd( ...

  5. R语言 数据清洗 重复值所在的行 重复 的筛选与去除,唯一ID出现重复 no重复处理

    住院号 姓名 等唯一值变量的检查与筛选 重复值所在的行 使用本地数据 鸢尾花(yuān wěi huā)做示例 [R语言][数据清洗]重复ID数据获取比对 #加载内置数据 data(iris) dat ...

  6. R语言数据清洗与规整-回归模型为例

    数据清洗和规整是进行数据分析的前提条件,数据的清洗和规整通常会花费比进行数据分析更多的时间,正所谓"清洗一小时,分析五秒钟". 数据清洗和规整要依据实际数据的特征进行,其包括缺失值 ...

  7. 如何利用R语言处理 缺失值 数据

    主要用到VIM和mice包 [plain]  view plain  copy install.packages(c("VIM","mice")) 1.处理缺失 ...

  8. [个人笔记]R语言:缺失值NA处理

    目录 前言 缺失值分布评估 看有多少行有缺失值: VIM:看一下缺失值的分布.比例情况 缺失值填补方法 Hmisc或e1071包:均值.中位数.随机填充 DMwR2包: 中心填充centralImpu ...

  9. R语言 处理缺失值数据

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 主要用到VIM和mice包 install.packages(c("VIM","mice")) 1.处 ...

最新文章

  1. [NIO-1]缓冲区
  2. curl get请求_Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选
  3. python selenium webdriver入门基本操作
  4. Opencv中三种操作像素的方法
  5. delphi 调用dll 整形返回值_VS2015 编写C++ DLL库及C++、 C#、python 调用
  6. mysql导出数据 程序_mysql导出数据
  7. 2015年《大数据》高被引论文Top10文章No.2——大数据时代的数据挖掘 —— 从应用的角度看大数据挖掘(上)...
  8. Eclipse下Maven工程多模块继承和聚合的创建
  9. 自监督学习推荐系统综述: 150篇自监督推荐系统文献概述四大类方法(含开源算法库SELFRec)...
  10. SSO单点登录Spring-Security+CAS+使用手册.doc
  11. 如何在服务器中安装mysql 以及安装禅道
  12. NOIP经典基础模板总结
  13. 经验分享 PDF如何旋转页面,替换页面
  14. 双曲正切函数(tanh)
  15. 重邮python实验课之华氏温度转摄氏温度速查表
  16. SEO实战干货:如何利用老域名打造新站百度快速收录排名!
  17. 删除GHOSTwin7桌面顽固IE图标
  18. ZedGraph保存图片的两种方式
  19. 第二十章 Unity 渲染管线
  20. 计算机连接不上蓝牙鼠标,win10系统蓝牙鼠标连接不上的图文教程

热门文章

  1. HTTP和HTTPS的区别是什么?
  2. 云计算开源软件有哪些?
  3. 杂谈!了解一些额外知识,让你的前端开发锦上添花
  4. 微软官方解读 Win11 操作系统
  5. 快速排序-超级详细代码注释!
  6. gcc 编译python_4 个快速的 Python 编译器 for 2018
  7. openwrt php 吃内存,ipkg, opkg 与 openWrt
  8. linux分区压力测试,stress-Linux系统压力测试工具使用及系统负载很高的几种场景测试...
  9. phalcon执行原始SQL查询语句
  10. linux实验报告一,linux实验报告