dplyr_DataProcess

dplyr_Package

前言:讲解dplyr包在数据处理中的使用,此包将原本plyr包中的ddply()等函数进一步分离强化, 专注接受 ‘dataframe’对象, 大幅提高了处理数据的速度, 并且提供了更稳健的与其它数据库对象间的接口。

一、数据重塑tbl.df()
##观察数据的形状 hflights数据集
dim(mtcars)
## [1] 32 11
#32条纪录,11个字段,
library(dplyr)
tbl_df(mtcars)
## # A tibble: 32 × 11
##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
## *  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1   21.0     6 160.0   110  3.90 2.620 16.46     0     1     4     4
## 2   21.0     6 160.0   110  3.90 2.875 17.02     0     1     4     4
## 3   22.8     4 108.0    93  3.85 2.320 18.61     1     1     4     1
## 4   21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1
## 5   18.7     8 360.0   175  3.15 3.440 17.02     0     0     3     2
## 6   18.1     6 225.0   105  2.76 3.460 20.22     1     0     3     1
## 7   14.3     8 360.0   245  3.21 3.570 15.84     0     0     3     4
## 8   24.4     4 146.7    62  3.69 3.190 20.00     1     0     4     2
## 9   22.8     4 140.8    95  3.92 3.150 22.90     1     0     4     2
## 10  19.2     6 167.6   123  3.92 3.440 18.30     1     0     4     4
## # ... with 22 more rows
二、基础数据操作

1.筛选特定条件的数据 filter()函数

filter(mtcars,am==1,mpg<20)# 且的关系
filter(mtcars,am==1|mpg<20)# 或的关系

2.排列 arrange()

arrange(mtcars,am,gear,carb) #默认正序排列
arrange(mtcars,am,desc(gear))#部分倒序

3.选择select()

#选择部分列,构造新的数据集
select(mtcars,mpg,am)
#按照列的位置,选取am至carb列
select(mtcars,am:carb)
#排除部分列
select(mtcars,-(am:carb))

4.变形数据集 mutate()

#将原数据集新增加一列num,为mpg与hp之和
mutate(mtcars,num=mpg+hp)

5.分组数据集 group_by()

gb<-group_by(mtcars,cyl)
#根据cyl的组别,计算disp均值和方差
summarise(gb,mean(disp),sd(disp))
## # A tibble: 3 × 3
##     cyl `mean(disp)` `sd(disp)`
##   <dbl>        <dbl>      <dbl>
## 1     4     105.1364   26.87159
## 2     6     183.3143   41.56246
## 3     8     353.1000   67.77132
#在已有cyl分组基础上,找出disp的最大值
filter(gb,disp==max(disp))
## Source: local data frame [3 x 11]
## Groups: cyl [3]
## 
##     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1  21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1
## 2  24.4     4 146.7    62  3.69 3.190 20.00     1     0     4     2
## 3  10.4     8 472.0   205  2.93 5.250 17.98     0     0     3     4

6.变量重命名 rename()

rename(mtcars,mpg1=mpg,am1=am)

7.数据聚合 summarise() 数据的聚合操作常常在数据库中使用,聚合函数显得尤为重要

#将mpg方差,disp均值,wt的最大值聚合在一个数据集上
summarise(mtcars,sd(mpg),mean(disp),max(wt))
##    sd(mpg) mean(disp) max(wt)
## 1 6.026948   230.7219   5.424
#分组聚合
summarise(group_by(mtcars,cyl),sd(mpg),mean(disp),max(wt))
## # A tibble: 3 × 4
##     cyl `sd(mpg)` `mean(disp)` `max(wt)`
##   <dbl>     <dbl>        <dbl>     <dbl>
## 1     4  4.509828     105.1364     3.190
## 2     6  1.453567     183.3143     3.460
## 3     8  2.560048     353.1000     5.424

8.数据关联 join()

内联函数:inner_join()
左联函数:left_join()
右联函数:right_join()
全联函数:full_join()
semi_join:返回能够与y表匹配的x表的所有记录
anti_join:返回无法与y表匹配的x表的所有记录

9.数据合并 bind_cols() && bind_rows()

bind_rows(data1,data2)#data1与data2有相同的行
bind_cols(data1,data2)#data1与data2有相同的列

10.管道函数 %>%(属于dplyr包特有的函数)

#将上一个函数的输出作为下一个函数的输入,简化书写
group_by(mtcars,cyl)%>%summarise(mean(disp),mean(hp))
## # A tibble: 3 × 3
##     cyl `mean(disp)` `mean(hp)`
##   <dbl>        <dbl>      <dbl>
## 1     4     105.1364   82.63636
## 2     6     183.3143  122.28571
## 3     8     353.1000  209.21429

11.随机和非随机函数

#非随机选取部分列
slice(mtcars,1:10)
#随机选取样本,行
sample_n(mtcars,10)#选取10个样本
sample_frac(mtcars,0.2)#选取20%样本

12.计数函数 count()

#按照特定的列,计数统计
count(mtcars,am,cyl)#按着am和cyl的因子水平,计数
## Source: local data frame [6 x 3]
## Groups: am [?]
## 
##      am   cyl     n
##   <dbl> <dbl> <int>
## 1     0     4     3
## 2     0     6     4
## 3     0     8    12
## 4     1     4     8
## 5     1     6     3
## 6     1     8     2
三、外部数据库连接MySQL
#下载功能包
library(RMySQL)
# 前提准备
> library(RMySQL)
# 数据库连接
> test <- src_mysql('qwer', host = NULL, port = 0L, 
  user = "root", password = "123456")
# 获取数据集 tbl()
# 提取test数据集中的q1数据表
> data_mysql <- tbl(test,from='q1')   
> data_mysql
Source:   query [?? x 6]
Database: mysql 5.5.22 [root@localhost:/qwer]

     id  name   sex   age  city address
  <int> <chr> <chr> <int> <chr>   <chr>
1     1    甲    男    25  北京    朝阳
2     2    乙    女    12  北京    海淀
3     3    丙    男    23  北京    东城
4     4    丁    女    14  上海    徐汇
5     5    戊    男    30  广州    越秀
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值