• 筛选: filter()
• 排列: arrange()
• 选择: select()
• 变形: mutate()
• 汇总: summarise()
• 分组: group_by()

• gather—宽数据转为长数据；
• unit—多列合并为一列；
• separate—将一列分离为多列；

### dplyr、tidyr包安装及载入

``````install.packages("dplyr")
install.packages("tidyr")

library(dplyr)
library(tidyr)
``````

``````mtcars_df = tbl_df(mtcars)
``````

### dplyr包基本操作

#### 1.1 筛选: filter()

``````filter(mtcars_df,mpg==21,hp==110)

#  A tibble: 2 x 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     6   160   110   3.9 2.620 16.46     0     1     4     4
2    21     6   160   110   3.9 2.875 17.02     0     1     4     4
``````

#### 1.2 排列: arrange()

``````arrange(mtcars_df, disp) #可对列名加 desc(disp) 进行倒序

# A tibble: 32 x 11
mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1   33.9     4  71.1    65  4.22 1.835 19.90     1     1     4     1
2   30.4     4  75.7    52  4.93 1.615 18.52     1     1     4     2
3   32.4     4  78.7    66  4.08 2.200 19.47     1     1     4     1
4   27.3     4  79.0    66  4.08 1.935 18.90     1     1     4     1
5   30.4     4  95.1   113  3.77 1.513 16.90     1     1     5     2
6   22.8     4 108.0    93  3.85 2.320 18.61     1     1     4     1
7   21.5     4 120.1    97  3.70 2.465 20.01     1     0     3     1
8   26.0     4 120.3    91  4.43 2.140 16.70     0     1     5     2
9   21.4     4 121.0   109  4.11 2.780 18.60     1     1     4     2
10  22.8     4 140.8    95  3.92 3.150 22.90     1     0     4     2
# ... with 22 more rows

``````

#### 1.3 选择: select()

``````select(mtcars_df, disp:wt)

# A tibble: 32 x 4
disp    hp  drat    wt
*  <dbl> <dbl> <dbl> <dbl>
1  160.0   110  3.90 2.620
2  160.0   110  3.90 2.875
3  108.0    93  3.85 2.320
4  258.0   110  3.08 3.215
5  360.0   175  3.15 3.440
6  225.0   105  2.76 3.460
7  360.0   245  3.21 3.570
8  146.7    62  3.69 3.190
9  140.8    95  3.92 3.150
10 167.6   123  3.92 3.440
# ... with 22 more rows

``````

#### 1.4 变形: mutate()

``````mutate(mtcars_df,
NO = 1:dim(mtcars_df)[1])

# A tibble: 32 x 12
mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb    NO
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
1   21.0     6 160.0   110  3.90 2.620 16.46     0     1     4     4     1
2   21.0     6 160.0   110  3.90 2.875 17.02     0     1     4     4     2
3   22.8     4 108.0    93  3.85 2.320 18.61     1     1     4     1     3
4   21.4     6 258.0   110  3.08 3.215 19.44     1     0     3     1     4
5   18.7     8 360.0   175  3.15 3.440 17.02     0     0     3     2     5
6   18.1     6 225.0   105  2.76 3.460 20.22     1     0     3     1     6
7   14.3     8 360.0   245  3.21 3.570 15.84     0     0     3     4     7
8   24.4     4 146.7    62  3.69 3.190 20.00     1     0     4     2     8
9   22.8     4 140.8    95  3.92 3.150 22.90     1     0     4     2     9
10  19.2     6 167.6   123  3.92 3.440 18.30     1     0     4     4    10
# ... with 22 more rows

``````

#### 1.5 汇总: summarise()

``````summarise(mtcars_df,
mdisp = mean(disp, na.rm = TRUE))
# A tibble: 1 x 1
mdisp
<dbl>
1 230.7219

``````

#### 1.6 分组: group_by()

``````cars <- group_by(mtcars_df, cyl)
countcars <- summarise(cars, count = n()) # count = n()用来计算次数

# A tibble: 3 x 2
cyl count
<dbl> <int>
1     4    11
2     6     7
3     8    14
``````

### tidyr包基本操作

#### 2.1 宽转长：gather()

``````gather(data, key, value, …, na.rm = FALSE, convert = FALSE)
data：需要被转换的宽形表
key：将原数据框中的所有列赋给一个新变量key
value：将原数据框中的所有值赋给一个新变量value
…：可以指定哪些列聚到同一列中
na.rm：是否删除缺失值

widedata
1   Alex     2    78
2    Bob     3    89
3  Cathy     4    88
longdata <- gather(widedata, variable, value,-person)
longdata
person variable value
4   Alex    score    78
5    Bob    score    89
6  Cathy    score    88
``````

``````spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE)
data：为需要转换的长形表
key：需要将变量值拓展为字段的变量
value：需要分散的值
fill：对于缺失值，可将fill的值赋值给被转型后的缺失值

car am carb cyl disp drat gear  hp  mpg  qsec vs    wt
1        AMC Javelin  0    2   8  304 3.15    3 150 15.2 17.30  0 3.435
2 Cadillac Fleetwood  0    4   8  472 2.93    3 205 10.4 17.98  0 5.250
3         Camaro Z28  0    4   8  350 3.73    3 245 13.3 15.41  0 3.840
4  Chrysler Imperial  0    4   8  440 3.23    3 230 14.7 17.42  0 5.345
5         Datsun 710  1    1   4  108 3.85    4  93 22.8 18.61  1 2.320
6   Dodge Challenger  0    2   8  318 2.76    3 150 15.5 16.87  0 3.520

``````

#### 2.3 合并：unit()

unite的调用格式如下：

``````unite(data, col, …, sep = “_”, remove = TRUE)
data：为数据框
col：被组合的新列名称
…：指定哪些列需要被组合
sep：组合列之间的连接符，默认为下划线
remove：是否删除被组合的列

wideunite<-unite(widedata, information, person, grade, score, sep= "-")
wideunite
information
1   Alex-2-78
2    Bob-3-89
3  Cathy-4-88
``````

#### 2.4 拆分：separate()

separate()函数可将一列拆分为多列，一般可用于日志数据或日期时间型数据的拆分，语法如下：

``````separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE,
convert = FALSE, extra = “warn”, fill = “warn”, …)
data：为数据框
col：需要被拆分的列
into：新建的列名，为字符串向量
sep：被拆分列的分隔符
remove：是否删除被分割的列

widesep <- separate(wideunite, information,c("person","grade","score"), sep = "-")
widesep
1   Alex     2    78
2    Bob     3    89
3  Cathy     4    88
``````

## R语言数据处理包dplyr、tidyr笔记的更多相关文章

1. R语言扩展包dplyr——数据清洗和整理

R语言扩展包dplyr——数据清洗和整理 标签: 数据R语言数据清洗数据整理 2015-01-22 18:04 7357人阅读 评论(0) 收藏 举报  分类: R Programming(11)  ...

2. R语言扩展包dplyr笔记

引言 2014年刚到, 就在 Feedly 订阅里看到 RStudio Blog 介绍 dplyr 包已发布 (Introducing dplyr), 此包将原本 plyr 包中的 ddply() 等 ...

3. R语言数据处理利器——dplyr简介

4. R(6): 数据处理包dplyr

5. R语言中的数据处理包dplyr、tidyr笔记

6. R语言 ggplot2包

R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

7. R语言-神经网络包RSNNS

code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

8. R语言-Knitr包的详细使用说明

R语言-Knitr包的详细使用说明 by 扬眉剑 来自数盟[总舵] 群:321311420 1.相关资料 1:自动化报告-谢益辉 https://github.com/yihui/r-ninja/bl ...

9. 安装R语言的包的方法

安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA")  # 安装 TSA install.packages("TS ...

## 随机推荐

1. [SonarQube]小结

新的项目用了这个,以前从来没用过,配置了一下,看看这个到底是个什么东东. 先学习一下英文单词: sonar 声纳, qube 方盒子, 连起来应该叫声纳盒, SonarQube一看就是一个监测诊断设备 ...

2. Linux（centeros）安装weblogic10.3.6教程

3. Asp.net基础知识

1.[项目结构] 1.1文件后缀: .cs         源文件(程序代码) .csproj      项目文件(管理文件项) .sln         解决方案文件(管理项目) .config   ...

4. KMP学习笔记

功能 字符串T,长度为n. 模板串P,长度为m.在字符串T中找到匹配点i,使得从i开始T[i]=P[0], T[i+1]=P[1], . . . , T[i+m-1]=P[m-1] KMP算法先用O( ...

5. JavaEE中的MVC（五）定制Struts——Action跳转JSP

在JavaEE中的MVC(三)中,我在Servlet中引入了命令模式的使用,采用Xml配置的方式,实现了一个Servlet调用多个不同的Action类,但是还不能实现页面地跳转,这一篇博客从之前的代码 ...

6. matlab 三维激光雷达点云的地面与障碍物检测

基于激光雷达的地面与障碍物检测 这个例子告诉我们如何去检测地平面并且找到三维LIDAR数据中与车相近的障碍物. 这个过程能够方便我们对汽车导航的可行驶区域规划. 注:每一帧的雷达属于都被存储为三维的雷 ...

7. 【leet-code】135. 加油站

题目描述 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升.你从其 ...

8. php源码笔记

php global 你global了一个变量,那么Zend就会去全局symbol_table去寻找,如果找不到,就会在全局symbol_table中分配相应的变量.通过这样的机制,实现了全局变量. ...