Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据处理|R-dplyr

数据处理|R-dplyr

作者头像
生信补给站
发布于 2020-08-06 02:54:00
发布于 2020-08-06 02:54:00
2.1K00
代码可运行
举报
文章被收录于专栏:生信补给站生信补给站
运行总次数:0
代码可运行

dplyr包实现数据的清洗处理,包括数据整合、关联、排序、筛选、汇总、分组等。

1)安装、加载dplyr包、准备数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
install.packages("dplyr") #加载dplyr包

使用dplyr包处理数据前,建议先将数据集转换为tbl对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data(iris)  #本文使用iris示例数据集。

2)数据记录筛选(行筛选)

filter函数:按指定条件筛选符合条件中逻辑判断要求的数据记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter(iris, Sepal.Length == 7)

Q:筛选花萼长大于7,花萼宽带大于等于3的数据?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter(iris, Sepal.Length > 7 & Sepal.Width>3.0)

Q:筛选出Species 为setosa或virginica的行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter(iris,Species %in% c("setosa","virginica"))

3)变量筛选(列)

select函数:可以通过指定列名选择指定的变量进行分析,得到的为选择的列。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select(iris,Sepal.Width,Petal.Length,Species)

其他特殊选择,可匹配:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select(iris,contains("." )) #选取名称中含有字符的列

区别:Filter&Select

Filter:通过一些准则选择观测值(行)

Select:通过名字来选择变量(列)

更名变量名: Select & Rename

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
head(select(iris,Sepal.W=Sepal.Width)) #只会保留选择的变量

4)数据排序(重要,大小,去除异常值)

arrange函数按给定的列名进行排序,默认为升序排列,也可以对列名加desc()进行降序排序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
arrange(iris,Sepal.Length) # 将数据按照Sepal.Length升序排序

5)变量变换/重构

mulate()函数可以数据拓展,也可以在保留原变量的基础上增加变量,进行数据处理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mutate(iris,sepal = Sepal.Length + Sepal.Width)

transmute()函数在扩展新变量的时候,会删除所有原始变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
transmute(iris,sepal = Sepal.Length + Sepal. Width) #计算一个或多个新列并删除原列

6)数据汇总

summarize()函数实现数据集聚合操作,将多个值汇总成一个值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
summarise(iris,avg = mean(Sepal.Length))

利用概述函数概括数据,输入数值向量而返回单一数值:

first 向量的第一个值。

last 向量的最后一个值。

IQR 向量的IQR(四分位距) 。

Min ;Max Mean ;Median ;Var ;Sd等

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
summarise(iris, max(Petal.Width), first(Sepal.Width)) #返回数据框中变量的最大值及第一四分位值

7)数据分组

group_by函数对数据进行分组后,结合summarize函数,可以对分组数据进行汇总统计。

Q:按品种分组,分别计算花萼宽度的均方差

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
summarise(group_by(iris,Species),sd=sd(Petal.Width))

8)连接操作符

dplyr包里还新引进了一个操作符,%>%, 使用时把数据集名作为开头, 然后依次对此数据进行多步操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iris %>%group_by(Species) %>% summarise(sd=sd(Petal.Width)) #iris数据集,按Species分组,汇总Petal.Width的sd值,

9)抽样

sample_n()随机抽取指定数目的样本,sample_frac()随机抽取指定百分比的样本,默认都为不放回抽样,通过设置replacement =TRUE可改为放回抽样,可以用于实现Bootstrap抽样。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sample_n(mtcars, 50, replace = TRUE) #随机有重复的取50行数

10)数据联结

dplyr包也提供了数据集的连接操作,如左连接、右连接、内连接等:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
inner_join(x,y,by = NULL)  #内连接,合并数据仅保留匹配的记录

by设置两个数据集用于匹配的字段名,默认使用全部同名字段进行匹配,如果两个数据集需要匹配的字段名不同,可以直接用等号指定匹配的字段名,如, by = c("a" = "b"),表示用x.a和y.b进行匹配。

11)数据合并

dplyr包中也添加了类似cbind()函数和rbind()函数功能的函数,它们是bind_cols()函数和bind_rows()函数。

注意:bind_rows()函数需要两个合并对象有相同的列数,而bind_cols()函数则需要两个合并对象有相同的行数。

查看自带的参考资料:vignette(package = "dplyr") vignette("introduction", package = "dplyr")

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
生信学习小组
R包安装命令是install.packages(“包”)#安装的包存在于CRAN网站
用户10633738
2023/07/02
2230
Day-6:学习R包
BiocManager::install(“包”)(R包来自Bioconductor)
用户11039713
2024/03/27
1080
Day4——查布铎徳勒
用户10663172
2023/07/21
2230
DAY06-R包学习
靓且有猫
2024/06/16
1390
Day6-R包
今天的内容在我刚看到的时候,觉得很难,看不懂每一步代码的意思,不知道是如何得到花花老师的结果的,但是在自己一步一步按照教程来进行操作,仔细比对前后的变化的时候,我对dplry包的使用有了更清晰的认识,这一部分内容需要自己多多练习,才能体会其中的含义。
用户11009106
2024/03/10
1410
DAY6-学习R包
用户10663401
2023/07/20
3170
tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)
汇总函数 summarise(),可以将数据框折叠成一行 ,多与group_by()结合使用
生信补给站
2020/08/05
2.6K0
Day6:学习R包
用户10859122
2023/12/03
1930
数据清洗与管理之dplyr、tidyr
先前已经讲过R语言生成测试数据、数据预处理和外部数据输入等内容,但这仅仅是第一步,我们还需要对数据集进行筛选、缺失值处理等操作,以便获得可以应用于建模或者可视化的数据集(变量)。接下来就以鸢尾花测试数据集进行进一步的数据管理和筛选操作。
1480
2019/06/20
1.9K0
数据清洗与管理之dplyr、tidyr
第6天生信学习笔记-微信公众号生信星球
R包是多个函数的集合,R语言必学的原因是丰富的图表和Biocductor上面的各种生信分析R包。
用户10986402
2024/02/25
1410
生信学习小组day6--大姚
上述一串代码意思是新增一列列名为“new”、数值是Sepal.Length * Sepal.Width的列
用户10340059
2023/02/11
8710
Day6-学习笔记(2024年2月3日)
R包是多个函数的集合,具有详细的说明和示例,学习生信R语言必学的原因是丰富的图表和biocductor的各种生信分析R包,包的使用是一通百通的,以dplyr为例,讲解一下R包
用户10954357
2024/02/03
2150
Day 6_学习R包- CG
在我练习select()时,想选择刚新增的列,发现报错。然后发现运行mutate(test, new = Sepal.Length*Sepal.Width)后,查看test后发现test本身没有变。
Crazy_George
2024/03/28
1660
DAY6- R包的使用
用户11039705
2024/03/28
1790
Day6——R包的学习
菜单栏-Tools-Packages-Primary CRAN repository-选择国内镜像
掩扉先生
2023/10/25
2160
R语言安装R包DAY6-Gaozsi
一个新数据框,其中包含键、 x 值和 y 值。我们使用 by 参数告诉 dplyr 哪个变量是键:
gaozsi
2024/02/25
1890
学习小组day6笔记-R包
all_of(): Matches variable names in a character vector. All names must be present, otherwise an out-of-bounds error is thrown.
清南
2023/04/13
3960
DAY6-学习R包
用户10801789
2023/10/25
3390
Day6 呦呦鹿鸣—学习R包
列表书写顺序决定了最终合成列表中列的顺序,每列数值的类型必须相同;以"by"的列为标准,补齐列表,空值为"NA"
用户10918035
2024/01/20
2990
Day6-橙子
用户11110663
2024/05/11
1490
Day6-橙子
相关推荐
生信学习小组
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验