【问题标题】:merging two exprs() data frames合并两个 exprs() 数据帧
【发布时间】:2019-06-18 14:46:23
【问题描述】:

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

【问题讨论】:

  • 使用的包名是什么?
  • 我不知道 ExpressionSet 是什么,但如果你可以将它们做成数据框,你可以使用来自dplyrfull_join()left_join()right_join()
  • 正如@ahmad 在他的回答中指出的那样,最好指定您加入的列。在这里,您的 id 被定义为 row.names 因此您的问题。在您的表达式上使用dput 之类的函数将使我们能够快速为您提供完整的答案。您可以在此处查找创建可重现示例的方法so_reproducible

标签: r bioinformatics bioconductor


【解决方案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)

如果数组 1 和 2 的基因 ID 相同,则可以按“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

【讨论】:

    猜你喜欢
    • 2014-04-14
    • 2012-07-23
    • 2017-12-17
    • 2019-03-29
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多