大数据人|大数据第一社区

 找回密码
 注册会员

扫一扫,访问微社区

用R语言做数据清理(详细教程)

2015-10-7 12:00| 发布者: admin| 查看: 3086| 评论: 0|来自: 数据挖掘DW

摘要: 数据的清理如同列夫托尔斯泰所说的那样:“幸福的家庭都是相似的,不幸的家庭各有各的不幸”,糟糕的恶心的数据各有各的糟糕之处,好的数据集都是相似的。一份好的,干净而整洁的数据至少包括以下几个要素:1、每一 ...
数据操作与整合


数据操作与整合

说到数据操作,这也是一个十分宽泛的话题,在这里我们就以下4个方面进行介绍:

  • 数据的筛选,过滤:根据一些特定条件选出或者删除一些观测

  • 数据的变换:增加或者修改变量

  • 数据的汇总:分组计算数据的和或者均值

  • 数据的排序:改变观测的排列顺序

然而在进行这一切之前首先要做的就是了解你的数据,我们以世界银行的数据Millennium Development Goals为例,来一步步演示如何进行数据操作:

if (!file.exists("C:/Users/yujun/Documents/MDG_Data.csv")) {
  download.file("http://databank.worldbank.org/data/download/MDG_csv.zip","F:/MDG.zip")
  unzip("F:/MDG.zip")
}MDstats<-read.csv("C:/Users/yujun/Documents/MDG_Data.csv")

首先先来看一部分数据:

head(MDstats)
##   Country.Name Country.Code
## 1  Afghanistan          AFG
## 2  Afghanistan          AFG
## 3  Afghanistan          AFG
tail(MDstats)
##       Country.Name Country.Code
## 33093     Zimbabwe          ZWE
## 33094     Zimbabwe          ZWE
## 33095     Zimbabwe          ZWE
## 33096     Zimbabwe          ZWE

我们显然发现了这不是一个tidy data,那么我们先将其变换为我们喜欢的tidy data,之后再看看数据摘要及数据集各单元的属性:

##   countryname countrycode
## 1 Afghanistan         AFG
## 2 Afghanistan         AFG
## 3 Afghanistan         AFG
## 4 Afghanistan         AFG
## 5 Afghanistan         AFG
## 6 Afghanistan         AFG
##                                                               indicatorname
## 1             Adolescent fertility rate (births per 1,000 women ages 15-19)
## 2                                  Agricultural support estimate (% of GDP)

我们可以看看各个数值数据的分位数:

quantile(MDstatsMelt$value,na.rm=TRUE)
##         0%        25%        50%        75%       100% 
## -9.431e+08  1.054e+01  5.060e+01  9.843e+01  7.526e+13

看看各个国家的统计数据有多少:

table(MDstatsMelt$countrycode)
## 
##  ABW  ADO  AFG  AGO  ALB  ARB  ARE  ARG  ARM  ASM  ATG  AUS  AUT  AZE  BDI 
## 3216 3216 3216 3216 3216 3216 3216 3216 3216 3216 3216 3216 3216 3216 3216 
##  BEL  BEN  BFA  BGD  BGR  BHR  BHS  BIH  BLR  BLZ  BMU  BOL  BRA  BRB  BRN 

看看缺失值:

sum(is.na(MDstatsMelt$value))  #总的缺失值
## [1] 495519
colSums(is.na(MDstatsMelt))  #每一列的缺失值
##   countryname   countrycode indicatorname indicatorcode          year 
##             0             0             0             0             0 
##         value 
##        495519
# 如果我们用回tidy前的数据集,那么这个函数会显得比较有用colSums(is.na(MDstats))
##   Country.Name   Country.Code Indicator.Name Indicator.Code          X1990 
##              0              0              0              0          23059 
##          X1991          X1992          X1993          X1994          X1995 
##          22293          21672          21753          21491          20970 
##          X1996          X1997          X1998          X1999          X2000 
##          20680          20448          20419          19933          18822 
# 等价的处理方式stat <- function(x) {
    sum(is.na(x))
}
tapply(MDstatsMelt$value, MDstatsMelt$year, stat)
## X1990 X1991 X1992 X1993 X1994 X1995 X1996 X1997 X1998 X1999 X2000 X2001 
## 23059 22293 21672 21753 21491 20970 20680 20448 20419 19933 18822 19598 
## X2002 X2003 X2004 X2005 X2006 X2007 X2008 X2009 X2010 X2011 X2012 X2013 
## 19119 19478 19269 18704 19044 18641 19256 19162 18756 20360 21967 30625

统计某个国家的统计数据占总统计数目的多少

table(MDstatsMelt$countryname %in% c("China"))
## 
##  FALSE   TRUE 
## 791136   3216
prop <- table(MDstatsMelt$countryname %in% c("China"))[2]/sum(table(MDstatsMelt$countryname %in% c("China")))prop
##     TRUE 
## 0.004049

看看数据集的大小:

object.size(MDstatsMelt)
## 22301832 bytes
print(object.size(MDstatsMelt),units="Mb")
## 21.3 Mb

至此,我们可以说我们对数据有了一定的了解。另外值得一提的是,对于某些特定的数据,也许xtabs,ftable是有用的。



鲜花

握手

雷人

路过

鸡蛋

最新评论

关闭

站长推荐上一条 /2 下一条


id="mn_portal" >首页Portalid="mn_P18" onmouseover="navShow('P18')">应用id="mn_P15" onmouseover="navShow('P15')">技术id="mn_P37" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">前沿id="mn_P36" onmouseover="navShow('P36')">宝箱id="mn_P61" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">专栏id="mn_P65" >企业id="mn_Nd633" >导航 折叠导航 关注微信 关注微博 关注我们

QQ|广告服务|关于我们|Archiver|手机版|小黑屋|大数据人 ( 鄂ICP备14012176号-2  

GMT+8, 2024-5-12 18:56 , Processed in 0.420847 second(s), 22 queries .

Powered by 小雄! X3.2

© 2014-2020 bigdataer Inc.

返回顶部