合并3个表以生成所有列的唯一组合

时间:2017-03-22 11:31:39

标签: r data.table

我在R中有3个表,其中没有一个共享一个公共密钥。我想创建一个第4个表,它结合了重复行的所有其他表,因此存在所有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))

因此,在结果表中,每一行都是唯一的。

1 个答案:

答案 0 :(得分:1)

我们可以使用CJ

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

或者以编程方式执行此操作

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