将基因名称添加到数据框,在转录ID列

时间:2016-11-06 21:28:50

标签: r bioinformatics genetics

我需要在数据框中添加一个包含基因名称的列,其中包含有关同种型丰度的信息。我有两张桌子。

DF 1(包含整体基因ID #s作为rownames,并在大约15个额外列中包含asorted同种型丰度值)

                              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#和基因名称)

          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列。我知道有一种方法可以根据感兴趣的列将这两个数据帧合并在一起

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

1 个答案:

答案 0 :(得分:0)

dplyr解决方案(可能)首先在Ensemble_Gene_ID中创建DF1列,然后根据该列使用dplyr加入。左连接是DF2中与DF1匹配的项目将成为新DF的一部分,但DF2独有的那些基因ID将不会(即DF1是您关心的模板类型,因此输出将保持不变DF1的原始内容。

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的示例块的情况下工作。