作者,排版:翼鸟風
审核:恺忻
大家在学习R语言的时候,大多参考《R语言实战》这本书,但这本书年代过于久远(中文第二版是年),主要着力点也是在Rbase上,R语言可视化的ggplot2包也只是简要介绍,而对于tidyverse包,《R语言实战》并未涉及,这也导致R语言的学习难度增加,今天我们给大家引入tidyverse包的学习。
tidyverse包是HadleyWickham及团队的集大成之作,是专为数据科学而开发的一系列包的合集,基于整洁数据,提供了一致的底层设计、语法、数据结构,包括数据导入,数据规整,数据处理,可视化,建模以及形成可重复性报告数据分析的全流程。在Rstudio中加载tidyverse包,可以看到该包下有8个子包,著名的ggplot2包即是其中的一个子集,我们先着重讲一下数据处理有关的包——dplyr包。dplyr包下主要是以下几个操作:select()——选择列filter/slice()——筛选行arrange()——对行进行排序mutate()——修改列/创建列summarize()——汇总数据而这些函数都可以与group_by结合,分组对原数据框进行处理。
1
mutate()
mutate()与基础函数transform()相似,都可以添加新的一列,但是允许引用刚刚创建的列:
mydata-tibble(x1=c(2,2,6,4),x2=c(3,4,2,8))##传统方法mydata$sum-mydata$x1+mydata$x2mydata-transform(mydata,sumx=x1+x2)attach(mydata)sum-x1+x2detach(mydata)##dplyrmydata%%mutate(sumx=x1+x2,meanx=sumx/4)##dplyr允许使用管道%%操作,且meanx可以引用sumx
2
select()
select()使我们能够快速聚焦在有用的数据子集上:
df-tibble(name=c("Alice","Alice","Bob","Bob","Carol","Carol"),type=c("english","math","english","math","english","math"),score=c(95,83,89,67,90,78))df%%select(1,2)##选取1,2列df%%select(name,score)df%%select(-3)##同样也可以用start_with或end_with筛选出具有前缀或者后缀的列df%%select(start_with("n"))
3
filter()
filter()是对数据行方向的选择和筛选,选出符合我们条件的某些行:
df%%filter(type=="english",score85)df%%filter(between(score,80,90))
4
summarize()
summarize()主要用于统计,往往与其他函数配合使用,比如计算所有同学考试成绩的均值:
df%%filter(type=="english")%%summarize(mean_english==mean(score)sd_english=sd(score))##summarize返回的是一个新的数据框,如果后续要使用到,需要保存下来
5
arrange()
Rbase包中涉及到排序的包括sort(),rank(),order(),而在dplyr包中与排序相关的是arrange()包,默认是从高到低进行排序,如果变换排序顺序则可以使用-(变量)或者desc(变量)。
df%%arrange(score)df%%arrange(-score)df%%arrange(desc(score))df%%arrange(type,score)#先对type进行排序,再对score进行排序
6
group_by()
group_by可以对原数据框进行分组计算,例如对于我们本文中的数据框,我们如果对个人或者科目感兴趣的话,可以使用group_by(name或者type),然后利用summarize函数就可以求出分类之后的各个统计值。
df%%group_by(name)%%summarise(mean_score=mean(newscore),sd_score=sd(newscore))
今天对于tidyverse包的介绍先到这里,tidyverse包的语法相比Rbase包更为容易记,样式较方便,在数据处理上快捷方便,仔细学习tidyverse包后相信大家会真正体会到R语言是一门神奇且方便的语言。
动动小手可以点呦
往期精彩不容错过
.01.23
单细胞测序+免疫,这个重点你Get到了吗?
JC
阿斯利康的开源逆合成规划工具AiZynthFinder
Cobrapy---基于python的代谢网络分析工具
基于CRAFT-基因调控和因果推理框架的靶点探寻
多种生物信息学分析方法联用确定急性胰腺炎的关键基因和途径
生信免疫热点需要这样蹭——基于肿瘤坏死因子的肺腺癌病人预后模型
明星化合物的诞生——SAR评估及分子设计指导的COMO策略(上)
IJMS
多功能连接图方法揭示秦皮乙素对高尿酸血症和肾纤维化的治疗作用
脂质组学分析利器——LiPydomics
不同物种基因ID的转换
扫码