R语言指定列取交集然后合并多个数据集的简便方法

之前录制过一期视频介绍过这个内容,他的基本需求就是:他有5份数据集,每一份数据集都是每行是一个基因,每列是一个样本,值是对应这个基因的表达量。他想将5个数据集中的共有基因找出来,然后5个数据集按共有的基因合并。

我的思路是

  • 先把5份数据的基因名取交集
  • 用基因名给每份数据做行名
  • 根据取交集的结果来提取数据
  • 最后合并数据集

那期内容有人留言了简便方法,很短的代码就实现了这个目的。我将代码记录在这篇推文里

因为5份数据集以csv格式存储,首先就是获得存储路径下所有的csv格式文件的文件名,用到的命令是

files<-dir(path = "example_data/merge_data/",
           full.names = T,
           pattern = ".csv")

用到的函数是dir()
path参数是数据文件存储的路径
full.names参数如果设置为TRUE,则返回文件的完整路径,如果设置的为FALSE则只返回文件名。
相对路径和绝对路径是很重要的概念,这个一定要搞明白
pattern参数指定文件的后缀名

接下来批量将5份数据读入

需要借助tidyverse这个包,用到的是map()函数

library(tidyverse)
df<-map(files,read.csv)
class(df) 

df是一个列表,5份数据分别以数据框的格式存储在其中

最后是合并数据

直接一行命令搞定

df1<-reduce(df,inner_join)

df1就是我们想要的结果

达成这个目的最终总共才用到了4行代码,太方便了。

之前和一位同学讨论的时候他也提到了tidyverse整理数据,但是自己平时用到的数据格式还算整齐,基本上用数据框的一些基本操作就可以达到目的了。也就没有学tidyverse这个包的内容,看来得抽时间好好学习一下了。

欢迎大家关注我的公众号
小明的数据分析笔记本

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容