首页 > 解决方案 > 在 R 中连接两个数据框

问题描述

抱歉,如果这是一个超级基本的问题,但我在处理我的 R 项目时遇到了问题。基本上我有两个数据框对象,一个是基因及其在各种患者中的表达水平的主列表,另一个是大小仅为一列的对象。然后,只有一列是属于特定基因子类别的基因列表,所有这些基因都在主列表中。我正在尝试创建一个数据框,其中包含我的特定基因子集及其在主列表中包含的不同患者中的表达。我尝试使用 merge() 函数,但只创建了一个空数据框。

基本上代码类似于:new_dataframe <- merge(master_list, specific_gene_list, by = "gene")。我认为这段代码应该查看我的主列表,找到特定列表中的所有基因,然后只获取这些基因并添加患者表达的列,但是我的数据框是空的,它创建了一个包含所有主列的数据框列表但没有填写任何值。非常感谢任何帮助。

一个视觉示例:

主数据框

x: 1

是:3

z : 4

w: 6

具体数据框:

X

是的

所需的数据框:

x: 1

是:3

标签: rdataframemerge

解决方案


我们可以regex_inner_join使用fuzzyjoin

library(fuzzyjoin)
df3 <-  regex_inner_join(df1, df2, by = 'gene') %>% 
      transmute(gene = gene.x)
df3
#   gene
#1 x: 1
#2 y: 3

数据

df1 <- structure(list(gene = c("x: 1", "y: 3", "z: 4", "w: 6")),
   class = "data.frame", row.names = c(NA, 
-4L))

df2 <- structure(list(gene = c("x", "y")), class = "data.frame", row.names = c(NA, 
-2L))

推荐阅读