通过引用文件映射探针ID到entrez ID



我有一个基因表达数据集"rna"带探针id。我也有一个参考数据集" refquot;具有探针ID及其对应的entrez ID。我想映射探针id从&;rna&;给那些在"ref"这样我就可以添加entrez ID到"rna"在我的参考数据集中,有探针映射到多个entrez ID,因此我还需要复制"rna"中的那些行。以便每行只映射到一个entrez ID(但保持相同的信息)。我正在寻找的结果是"有机"。也有一些重复的主菜id可以留下。TYIA

rna = data.frame("Org1" = c(1.5, 3.5, 2.4, 3.2, 4.5), "Org2" = c(2.5, 3.5,7, 2.6, 7), 
             "Org3" = c(3.6,7.2,4,5,6), "Probe" = c("11715100_at", "11715101_s_at", 
                                                    "11715102_x_at", "11715103_x_at", "11715104_s_at"))
ref = data.frame("Probe Set ID" = c("11715100_at", "11715101_s_at", "11715102_x_at", "11715103_x_at", 
                                "11715104_s_at"), "Entrez" = c("8355", "8355", "340307 /// 441294",
                                                          "285501", "8263 /// 474383 /// 474384"))                                          

org_rna = data.frame( "Org1" = c(1.5, 3.5, 2.4, 2.4, 3.2, 4.5, 4.5, 4.5), "Org2" = c(2.5, 3.5,7,7, 2.6, 7,7,7), 
                  "Org3" = c(3.6,7.2,7.2,4,5,6,6,6), "Probe" = c("11715100_at", "11715101_s_at", 
                                  "11715102_x_at", "11715102_x_at", "11715103_x_at", "11715104_s_at", 
                                  "11715104_s_at", "11715104_s_at"), "Entrez" = c("8355", "8355",
                                    "340307", "441294", "285501", "8263", "474383", "474384"))   

第一步

ref转换为数据帧,其中每个Entrez-id都有自己的行:

ref_match <- ref
ref_match$Entrez <- strsplit(ref_match$Entrez, ' /// ')
ref_match <- tidyr::unnest(ref_match, Entrez)

参见R - make multiple elements list to data frame rows获取替代方法。

步骤2

连接rnaref_match,其中rna$Probe == ref_match$Probe.Set.ID:

rna_matched <- dplyr::left_join(rna, ref_match, by=c('Probe' = 'Probe.Set.ID'))

清理

rm(ref_match)

你会注意到这些例子需要tidyrdplyr库,它们都是tidyverse包的一部分;您可能需要先安装它们。rna_matched的结果与您的示例相同。

最新更新