【发布时间】:2021-09-07 01:36:35
【问题描述】:
我有一项大工作要合并两个大型 data.tables。这对我来说是新的,我需要向同事演示和解释。这就是偏执方法的原因,我想随机选择一些结果行来向我们保证合并正在做我们认为的事情!这是我的 MWE,谢谢。 J
library(data.table)
first <- data.table(index = c("a", "a", "b", "c", "c"),
type = 1:5,
value = 3:7)
second <- data.table(i2 = c("a", "a", "b", "c", "c"),
t2 = c(1:3, 7, 5),
value = 5:9)
second[first , on=c(i2="index", t2="type"), nomatch=0L]
AFAIK 正确地完成了这项工作,并给出了这个结果
i2 t2 value i.value
1: a 1 5 3
2: a 2 6 4
3: b 3 7 5
4: c 5 9 7
但是,如果可能,我希望保留两个表中的所有列,以便结果如下所示:
i2 t2 index type value i.value
1: a 1 a 1 5 3
2: a 2 a 2 6 4
3: b 3 b 3 7 5
4: c 5 c 5 9 7
是否可以保留所有列?
【问题讨论】:
-
也许使用 dplyr::full_join(),但这是在转换您的数据....
-
我认为没有办法直接从加入中做到这一点。但是连接不会给你错误的结果。如果您仍想检查并确保您是正确的,请重命名列,以便两个表具有相同的列名
setnames(first, old = c("index", "type"), new = c("i2", "t2"))。这样就会知道joined表上的i2和t2列同时引用first和second表。
标签: r merge data.table multiple-columns