【问题标题】:How to add specific strings to a data.frame in R如何将特定字符串添加到 R 中的 data.frame
【发布时间】:2015-08-19 13:52:34
【问题描述】:

我有两个数据框,其中一个具有我的数据的统计输出,我正在使用的基因在此数据框中由集群 ID 引用。我拥有的另一个数据框具有集群 ID 和随附的基因 ID。

data.frame1 是带有相关统计数据的无序集群的集合

           X    baseMean 
cluster_1234         542
cluster_2546         764
cluster_3472         564

data.frame2 由簇按升序排列,但关联的gene_id 是随机顺序的,但允许我与另一个数据框中的其他关联数据进行比较。

     gene_id  cluster_id 
  gene_69149   cluster_1
  gene_23478   cluster_2
  gene_92371   cluster_3

我想要做的是通过迭代 data.frame1$x 为我的每个集群添加一个具有相关基因 ID 的列。输出将是一个新的数据框,其中包含感兴趣的基因和基因 ID。我还应该指出,data.frame1 中只有 900 行,但 data.frame2 中有 53,000 行。这类似于下面的内容。另一个问题是与每个gene_id 相关联的数字与与每个集群编号相关联的数字不相似。

  gene_id            X     baseMean
gene_5463 cluster_1234          542
gene_7934 cluster_2546          764
gene_8346 cluster_3472          564

我只想在重要的集群 ID 旁边的新列中添加相关的基因 ID。

【问题讨论】:

  • 在您给出的示例中,没有任何行匹配。我想你可以试试?match。基于输入数据的预期输出会很有帮助。
  • 输入示例和输出不同。请考虑提供重现输出的示例。
  • 输出不同,因为我想在data.frame2中用适当的gene_id标记cluster_id
  • 我明白这一点。您可以使用mergematch 来执行此操作。即merge(df1, df2, by.x='cluster_id', by.y='X')
  • 非常感谢您发表此评论,我会投赞成票

标签: r


【解决方案1】:

我们可以使用merge

merge(df1, df2, by.x='X', by.y='cluster_id')

如果我们有大型数据集,另一个选项是inner_join/left_join/full_join 等(取决于想要的输出)来自library(dplyr)

library(dplyr)
inner_join(df1, df2, by=c('X'='cluster_id'))

【讨论】:

    猜你喜欢
    • 2015-05-16
    • 2021-07-02
    • 2023-04-10
    • 1970-01-01
    • 2011-12-16
    • 2018-07-27
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多