首页 > 解决方案 > 基于另一个数据帧在 R 中对数据帧进行子集化,多次点击

问题描述

我有两个数据框

df1

names   target   start  end

Gene_1  chr5     1      345
Gene_2  chr1     1      678
Gene_3  chr4     1      909
Gene_4  chr48    1      876
Gene_5  chr8     1      432
Gene_6  chr9     1      556
Gene_7  chr12    1      345

df2

gene_names   positions

Gene_1       221
Gene_2       34
Gene_2       444
Gene_2       324
Gene_3       99
Gene_3       232
Gene_4       221
Gene_4       334
Gene_4       390
Gene_6       200
Gene_7       146

df1比 短得多df2。的第一列df2在第二列中有不同值的重复观察。它的第一列缺少一些匹配(很多)在同源列中的观察df1

我想将它们合并到一个df_new中,其中包含gene_names和另一列df2以及来自另一列的相关信息df1,甚至在观察gene_names出现 2 次以上时重复。

我为合并铺平了道路

df_new<-merge(df2, df1, by.x = "gene_names", by.y = "names")

我有一个初步的结果,我不确定。有人可以阐明更多吗?

预期输出

df_new

gene_names   positions  target   start  end

Gene_1       221        chr5     1      345
Gene_2       34         chr1     1      678
Gene_2       444        chr1     1      678
Gene_2       324        chr1     1      678
Gene_3       99         chr4     1      909
Gene_3       232        chr4     1      909
Gene_4       221        chr48    1      876
Gene_4       334        chr48    1      876
Gene_4       390        chr48    1      876
Gene_6       200        chr9     1      556
Gene_7       146        chr12    1      345

标签: rdataframemergesubset

解决方案


我们可以merge使用base R

merge(df1, df2, all.y = TRUE, by.x = "gene_names", by.y = "names")

推荐阅读