千家信息网

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

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,今天就跟大家聊聊有关R语言指定列取交集后合并多个数据集的简便方法是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。之前录制过一期视频介绍过
千家信息网最后更新 2024年11月27日R语言指定列取交集后合并多个数据集的简便方法是怎样的

今天就跟大家聊聊有关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这个包的内容,看来得抽时间好好学习一下了。

看完上述内容,你们对R语言指定列取交集后合并多个数据集的简便方法是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0