我有两个表达式集,我想合并成一个叫做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()
函数的结果似乎只是返回一个基因名称的向量,而不是每个样本的表达值。
答案 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