【问题标题】:Data Table R: Merge selected columns from multiple data.table数据表 R:合并来自多个 data.table 的选定列
【发布时间】:2021-02-11 22:10:16
【问题描述】:

我有数百个数据表,例如下面给出的示例,它们的行和列完全相同。我想将所有数据表中的选定列(例如 ID、FDR 和 LogFC)合并(不是通过 rbindlist)到一个组合的 data.table 中。

               ID         P        FDR      LogFC            animals
 1:            A    1.568780e-01 2.5e-01  0.3348365           dog
 2:            B    4.960651e-05 2.6e-04  0.5768812           dog
 3:            C    3.123122e-01 4.2e-01  0.1872491           dog
 4:            D    8.583002e-07 8.3e-06  0.8387016           dog
 5:            E    2.776600e-03 8.4e-03  0.6495237           dog
 6:            F    3.925375e-06 3.3e-05  1.2510581           cat
 7:            G    4.248726e-07 4.7e-06  1.4029001           cat
 8:            H    1.497479e-03 4.8e-03  0.7471876           cat
 9:            I    3.335468e-07 4.0e-06  1.2297170           cat
10:            J    5.889612e-04 2.2e-03  1.0751952           cat

我尝试使用以下(来自https://stackoverflow.com/posts/39561045/revisions;

DT.comb<-Reduce(function(...) merge.data.table (..., by="ID", all = TRUE), dt.list, allow.cartesian=T)

但我不确定如何将列选择传递给 merge.data.table。虽然我可以通过使用rbindlist 来实现这一点,删除不需要的列(例如 P 和动物)然后 dcast 表格以将其转换为宽格式,如果我可以使用merge.data.table 或其他方法,我会很棒,如果可能的。我非常感谢您对此的任何意见。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    只需将by = "ID" 更改为by = c("ID", "FDR", "logFC") 并且参数allow.cartesian 应该在merge

    DT.comb <- Reduce(function(...) merge.data.table(...,
       by= c("ID", "FDR", "LogFC"),  all = TRUE,  allow.cartesian=TRUE), dt.list)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 2020-12-31
      • 2019-01-10
      • 2016-04-29
      • 2019-11-08
      相关资源
      最近更新 更多