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

 找回密码
 注册会员

扫一扫,访问微社区

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

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

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


数据的筛选

要提取相应内容的数据,最为常用的就是提取相应元素,比如提取某个元素,提取某一行,某一列。我们通过下面下面的例子来学习:

data<-data.frame(a=sample(1:10),b=rep(c("a","b"),each=5),cdf=rnorm(10))data
##     a b     cdf
## 1   1 a  0.5755
## 2  10 a  0.8087
## 3   2 a  0.9810
## 4   7 a -0.4635
## 5   4 a  0.5094
#提取相应元素data[2,1]
## [1] 10
data[[1]][[2]]
## [1] 10
data[[c(1,2)]]
## [1] 10
data$a[2]
## [1] 10
#提取某一列data[[3]]
##  [1]  0.5755  0.8087  0.9810 -0.4635  0.5094  1.0514 -1.5338  1.0047
##  [9]  1.0004 -1.3566
data$cdf
##  [1]  0.5755  0.8087  0.9810 -0.4635  0.5094  1.0514 -1.5338  1.0047
##  [9]  1.0004 -1.3566
data$c
##  [1]  0.5755  0.8087  0.9810 -0.4635  0.5094  1.0514 -1.5338  1.0047
##  [9]  1.0004 -1.3566
data[["c"]]
## NULL
data[["c", exact = FALSE]]
##  [1]  0.5755  0.8087  0.9810 -0.4635  0.5094  1.0514 -1.5338  1.0047
##  [9]  1.0004 -1.3566

数据的筛选还有一个最为常用的的就是移除缺失值:

data<-data.frame(a=c(sample(1:5),NA,NA,sample(6:10)),b=c(rep(c("a","b"),each=5),NA,NA),cdf=rnorm(12))data
##     a    b       cdf
## 1   5    a -0.276400
## 2   1    a -1.861240
good <- complete.cases(data)data[good, ]
##    a b     cdf
## 1  5 a -0.2764
## 2  1 a -1.8612
## 3  3 a -2.0280
bad <- as.data.frame(is.na(data))data[!(bad$a|bad$b|bad$c),]
##    a b     cdf
## 1  5 a -0.2764
## 2  1 a -1.8612

数据筛选有时是为了获得符合条件的数据:

X <- data.frame("var1"=sample(1:5),"var2"=sample(6:10),"var3"=sample(11:15))X <- X[sample(1:5),]; X$var2[c(1,3)] = NAX
##   var1 var2 var3
## 2    5   NA   13
## 5    3    6   15
## 1    2   NA   12
## 3    1    8   11
## 4    4    9   14
X[(X$var1 <= 3 & X$var3 > 11),]
##   var1 var2 var3
## 5    3    6   15
## 1    2   NA   12
subset(X,(X$var1 <= 3 & X$var3 > 11))
##   var1 var2 var3
## 5    3    6   15
## 1    2   NA   12
X[(X$var1 <= 3 | X$var3 > 15),]
##   var1 var2 var3
## 5    3    6   15
## 1    2   NA   12
## 3    1    8   11
X[which(X$var1 <= 3 | X$var3 > 15),]
##   var1 var2 var3
## 5    3    6   15
## 1    2   NA   12
## 3    1    8   11

对于取子集的函数subset,在帮助文档中有一段warning是值得我们注意的:“This is a convenience function intended for use interactively. For programming it is better to use the standard subsetting functions like [, and in particular the non-standard evaluation of argument subset can have unanticipated consequences."



鲜花

握手

雷人

路过

鸡蛋

最新评论

关闭

站长推荐上一条 /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 17:20 , Processed in 0.207080 second(s), 22 queries .

Powered by 小雄! X3.2

© 2014-2020 bigdataer Inc.

返回顶部