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

通常的方法有四种:

  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. 腾讯云数据库团队:浅谈如何对MySQL内核进行深度优化

    作者介绍:简怀兵,腾讯云数据库团队高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾获一项发明专利:从事MySQL内核开发工作 ...

  2. 1688: [Usaco2005 Open]Disease Manangement 疾病管理

    1688: [Usaco2005 Open]Disease Manangement 疾病管理 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 413  So ...

  3. USACO全部月赛及GateWay数据

    月赛: 以07年open为例,网站如下 http://contest.usaco.org/OPEN07 其他的格式是http://contest.usaco.org/月份(月份的英文前三位,比如1月是 ...

  4. iOS截屏保存至相册

    #pragma mark 截屏并保存至相册 -(void)screenShotsComplete:(void(^)(UIImage * img)) complete { CGSize imageSiz ...

  5. [lua] mac上如何编译snapshot(检测Lua中的内存泄露)

    最近我们的unity手游频繁闪退,只要进入战斗场景,之后一段时间就会闪退,如果是在unity编辑器中则会报出not enough memory的错误!猜测应该是有内存泄漏: 由于我们使用了tolua, ...

  6. 关于java泛型

    <T> 代表的是泛型 ,实例化的时候将传入真正的数据类型,比如: public interface BaseProvider<T>{ public T test(); } 实例 ...

  7. ubuntu中文输入问题

    因为硬盘版的一些缺陷,我狠心的把windows8覆盖为ubuntu 13.10,用u盘安装,除了分区稀里糊涂的还不知到怎么分,其他问题就是汉字的输入问题了,因为之前选了english-US 后来就没有 ...

  8. 学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)

    学生选课数据库SQL语句45道练习题: 一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四 ...

  9. 关于统一资源标志符URL的理解

    URL由三部分构成 A:B:C A:URL使用的领域 B:在此领域的类型名称 C:标识资源的具体位置 C可以是一个绝对路径,也可以是端口号加上资源名称,总之是可以唯一标示资源的标识 例: 在网址中 S ...

  10. mybatis与spring整合时读取properties问题的解决

    在学习mybatis与spring整合是,想从外部引用一个db.properties数据库配置文件,在配置文件中使用占位符进行引用,如下: <context:property-placehold ...