合并两个exprs()数据帧

时间:2019-06-18 14:46:23

标签: r bioinformatics bioconductor

我有两个表达式集,我想合并成一个叫做exprs.br.ov的表达式集,包括每个基因的所有样本中的值(两个集合中都不存在所有基因)。

第一个是exprs(br.samp),其中包含48107行(基因)和3列(样本)。 第二个是exprs(ov.samp),它是49576行和6列。

我已经尝试过(在笔记本电脑上花费了几分钟):

exprs.br.ov <- merge(exprs(br.samp), exprs(ov.samp))

我可以发送完整的数据集,但以下是这两个数据集的示例:

exprs(br.samp)[1000:1005,]
             GSM1686435 GSM1686439 GSM1686443
ILMN_1652079   2.598251   2.691751   2.660744
ILMN_1652081   2.615129   2.750116   2.692110
ILMN_1652082   3.355115   3.349804   3.359563
ILMN_1652085   3.356552   3.293744   3.416394
ILMN_1652088   2.604641   2.634033   2.705018
ILMN_1652098   2.636708   2.681400   2.668621


exprs(ov.samp)[1:5,]
             GSM780707 GSM780708 GSM780709 GSM780719 GSM780720 GSM780721
ILMN_1725881  5.844604  6.117963  5.894689  5.587485  5.808352  5.928565
ILMN_1910180  6.264897  5.767562  5.736104  6.449061  5.841978  5.651918
ILMN_1804174  5.568391  5.232546  5.788832  5.641904  5.392946  5.632815
ILMN_1796063 10.592653 10.549996 10.209368 10.702580 10.630577 10.485648
ILMN_1811966  6.183197  6.231567  6.173843  6.142019  6.120883  5.966730

我只想包括两组中都存在的基因,每个样本有9列。

merge()函数的结果似乎只是返回一个基因名称的向量,而不是每个样本的表达值。

1 个答案:

答案 0 :(得分:1)

将第一个数组数据另存为g1

g1=exprs(br.samp)
g1=data.frame(g1)
g1$id=rownames(g1)

将第二个数组数据另存为g2

g2=exprs(ov.samp)
g2=data.frame(g2)
g2$id=rownames(g2)

如果基因ID在数组1和2之间是公用的,则可以通过“ id”列将其合并

mrg1=merge.data.frame(x = g1,y = g2,by = "id",all = F)#keep only common genes

mrg2=merge.data.frame(x = g1,y = g2,by = "id",all = T)#keep all genes