在进行数据分析之前,我们往往需要对数据进行预处理,而最重要一部分就是怎么处理哪些缺失的数据。

通常的方法有四种:

  1. 删除这些缺失的数据。
  2. 用最高频数来补充缺失数据。
  3. 通过变量的相关关系来填充缺失值。
  4. 通过案例之间的相似性来填充缺失值。

下面通过R语言对上面4种方法进行说明(algae数据来源:http://www.dcc.fc.up.pt/~ltorgo/DataMiningWithR/extraFiles.html)

#方法一:删除这些缺失的数据。
algae[!complete.cases(algae),];#显示所有含有缺失数据的行
nrow(algae[!complete.cases(algae),]);#行数ncol():列数
algae<-na.omit(algae);#删除缺失数据的行。
data(algae);
manyNAs(algae,0.3);#得到缺失值个数大于列数30%的行标。
apply(algae,1,function(x)sum(is.na(x)));#统计每行中含有缺失数据的个数。
apply(algae,2,function(x)sum(is.na(x)));#统计每列中含有缺失数据的个数。
algae<-algae[-c(62,199),];#删除含有较多缺失数据的行。
#方法二:用最高频数来补充缺失数据
data(algae);
algae[48,"mxPH"]<-mean(algae$mxPH,na.rm=T);#使用平均值(正态分布)补充缺失的数据。
algae[is.na(algae$Cl),"Cl"]<-median(algae$Cl,na.rm=T);#使用中位数补充这一列中所有缺失的数据
#方法三:通过变量的相关关系来填充缺失值
#1、使用函数cor()来获取变量之间的相关值矩阵。
cor(algae[,4:18],use="complete.obs");
symnum(cor(algae[,4:18],use="complete.obs"));
#2、通过得到的关联矩阵,得到哪些变量之间有较强的线性关系
data(algae);
algae<-algae[-manyNAs(algae),];
lm(PO4~oPO4,data=algae);#通过函数lm(,)来得到它们线性关系PO4=a+b*oPo4;
algae[28,"PO4"]<-42.897+1.293*algae[28,"oPO4"];
#建立一个函数;
fillP04<-function(x){
      if(is.na(x))
        retrun(NA)
      else
        return(42.897+1.293*x)
}
algae[is.na(algae$PO4),"PO4"]<-sapply(algae[is.na(algae$PO4),"oPO4"],fillP04);
histogram(~mxPH|size*speed,data = algae);
#方法四: 通过案例之间的相似性来填充缺失值
algae<-knnImputation(algae,k=10);
algae<-knnImputation(algae,k=10,meth="median");

对数据缺失的处理(R)的更多相关文章

  1. 数据科学实战手册(R+Python)书中引用资料网址

    本文会持续将<数据科学实战手册(R+Python)>一书中的附带参考资料网址手打出来, 方便访问. 由于书中的参考资料网址太多, 这个文档将可能花费一段时间才能完成. 第一章 P7  Rs ...

  2. 05-pandas索引切片读取数据缺失数据处理

    引入 numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候, ...

  3. 大数据工具比较:R 语言和 Spark 谁更胜一筹?

    本文有两重目的,一是在性能方面快速对比下R语言和Spark,二是想向大家介绍下Spark的机器学习库 背景介绍 由于R语言本身是单线程的,所以可能从性能方面对比Spark和R并不是很明智的做法.即使这 ...

  4. 数据缺失值的处理 | R包 - mice

    有些情况下缺失值会零星的分布在数据当中,这时去掉所有包含缺失值的样本就不行了,直接用0去填补缺失值也不行. 所以此时就应该用拟合的方法来填补缺失值. library(mice) init = mice ...

  5. OPENQUERY 无行返回 无数据返回 数据缺失

    用SQL Server 2008 R2 的 Oracle Provider for OLE DB 链接Oracle . 在SQL Server中使用下面查询语句,没有数据返回 但是再PL/SQL中查找 ...

  6. Excel VBA简单使用——数据缺失处理

    VBA(Visual Basic for Applications)是VB的一种宏语言.用来扩展应用程式的功能.特别是Microsoft Office软件. 转载请注明原文地址:http://blog ...

  7. 数据科学中的R和Python: 30个免费数据资源网站

    1 政府数据 Data.gov:这是美国政府收集的数据资源.声称有多达40万个数据集,包括了原始数据和地理空间格式数据.使用这些数据集需要注意的是:你要进行必要的清理工作,因为许多数据是字符型的或是有 ...

  8. Oracle EBS PO rcv_shipment_headers 数据缺失

    Datafix : How to Recreate Missing Receipt or Shipment Header Records (RCV_SHIPMENT_HEADERS table) (D ...

  9. R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理

    在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...

随机推荐

  1. js原生Ajax 的封装和原理

    原理及概念 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是一种用于创建快速动态网页的技术. 动态网页:是指可以通过服务器语言结合数 ...

  2. mysql数据库开始——增删改

    注释语法:#注释语 一.T-SQL语句注意:1.语句写完后用“分号:”代表这一句结束2.列结束用逗号,最后一列写完不用写逗号3.符号一定是英文的 关键字:主键:primary key外键:foreig ...

  3. MySQL学习分享-->查询-->查询的原理

    查询的原理 在一个查询中常包含下述子句: 1.select,2.distinct,3.join,4.on,5.from,6.where,7.having,8.group by,9.order by,1 ...

  4. HTML5学习笔记<一>: 认识H5

    什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变. HTML5 仍 ...

  5. ps-抠图

    1-    图层区—复制背景图层            防止原图修改失败后无法还原 2-    工具栏——磁性套索工具                    可以有效的对色彩边线较为明显的图片进行抠图 ...

  6. [LeetCode] Range Sum Query - Mutable 题解

    题目 题目 思路 一看就是单点更新和区间求和,故用线段树做. 一开始没搞清楚,题目给定的i是从0开始还是从1开始,还以为是从1开始,导致后面把下标都改掉了,还有用区间更新的代码去实现单点更新,虽然两者 ...

  7. AutoIt 脚本小试——刷网易云音乐歌单

    AutoIt 确实是个很强大的脚本工具. 如果早知道有这个,当初是怎么都不会去学易语言的  (๑•̀ω•́๑) 这是个简单脚本 = ๛ก(ー̀ωー́ก) 用来增加歌单播放次数和个人的听歌量. 原理不过 ...

  8. Android Weekly Notes Issue #249

    Android Weekly Issue #249 March 19th, 2017 Android Weekly Issue #249 本期内容包括: 一个设计的实现Demo讨论; Kotlin的C ...

  9. Java变量和对象的作用域

    大多数程序设计语言都提供了"作用域"(Scope)的概念. 对于在作用域里定义的名字,作用域同时决定了它的"可见性"以及"存在时间".在C, ...

  10. underscore.js,jquery.js源码阅读

    (function() { // Baseline setup // -------------- // Establish the root object, `window` in the brow ...