将基因名称添加到数据框,在转录本 ID 列上合并 2 个数据框

Add gene names to dataframe, merge 2 dataframes on transcript ID column

我需要将包含基因名称的列添加到包含同种型丰度信息的数据框中。我有两张桌子。

DF 1(包含作为行名的集合基因 ID #s 和大约 15 个附加列中的分类亚型丰度值)

                              event_name              sample1_posterior_mean                        
gene:ENSMUSG00000079523       0.93,0.02,0.00,0.06     0.90,0.01,0.00,0.04
gene:ENSMUSG00000078572       0.78                    0.67
gene:ENSMUSG00000022548       0.63                    0.25

DF 2(包含 3 列整体基因 ID #s 和基因名称)

          Ensemble_Transcript_ID  Ensemble_Gene_ID     External_Gene_ID
2335      ENSMUST00000101973      ENSMUSG00000096659            Gm25679
2336      ENSMUST00000179019      ENSMUSG00000095915           n-R5s115
2337      ENSMUST00000183908      ENSMUSG00000099299            Gm27722
2338      ENSMUST00000044752      ENSMUSG00000039481               Nrtn
2339      ENSMUST00000179157      ENSMUSG00000095476            Gm25077

我想将 DF 2 中的 External_Gene_ID 列添加到 DF 1 中相应的 Ensemble_Gene_ID 列。我知道有一种方法可以根据列将这两个数据框合并在一起感兴趣

我希望我已经足够详细地解释了这一点。感谢您的帮助!

一个dplyr解决方案(可能)是先在DF1中创建Ensemble_Gene_ID列,然后使用dplyr基于该列进行连接。左连接使得 DF2 中与 DF1 匹配的项目将成为新 DF 的一部分,但 DF2 独有的那些基因 ID 不会是(即,DF1 是您关心的模板,这样输出将保持DF1的原始nrow)。

DF1$Ensemble_Gene_ID <- sapply(rownames(DF1), 
                          function(x){unlist(strsplit(x,':'))[2]})})

DF3 <- dplyr::left_join(DF1, DF2, by=c('Ensemble_Gene_ID'='External_Gene_ID'))

但我不确定如果没有每个 data.frame 的示例块,这是否有效。