【问题标题】:Combine 3 tables to produce unique combination of all columns组合 3 个表以生成所有列的唯一组合
【发布时间】:2017-03-22 11:31:38
【问题描述】:

我在 R 中有 3 个表,其中没有一个共享一个公共键。我想创建一个第四个表,它结合了所有其他重复行的表,因此存在所有 3 列的唯一组合。

dt1 <- data.table(a = c(1,2,3,4,5))
dt2 <- data.table(b = c("a","b","c","d","e"))
dt3 <- data.table(c = c("p1", "p2", "p3"))

所以对于 dt3 中的每一行,您都有 dt1 和 dt2 的组合

前几行的示例如下:

dt4 <- data.table(a = c(rep(1, 3), rep(2, 3)), c(rep("a", 3), rep("b", 3)), rep(c("p1", "p2", "p3"), 2))

所以在结果表中,每一行都是唯一的。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    我们可以使用CJ

    CJ(a = dt1$a, b = dt2$b, c = dt3$c)
    

    或者以编程方式进行

    do.call(CJ, lapply(mget(paste0("dt", 1:3)), `[[`, 1))
    

    【讨论】:

    • 谢谢,效果很好!我可以问一个愚蠢的问题 - 你是怎么知道的?或者我怎么能在不问 SO 的情况下发现这一点?
    • @MidnightDataGeek 抱歉,我正在接听电话。它来自实践。如果您开始使用一种语言几个月/几年,您将了解许多功能和管理它的方法。
    • @Midnight 另外,如果您阅读?data.table 及其“另请参阅”部分下的所有链接,您将对可用的功能有很好的了解。
    猜你喜欢
    • 2019-04-11
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多