我正在尝试连接 R 中的两个表,但没有得到预期的结果。 这是两个示例 data.tables
dt1 <- data.table(s = c(1,1,1,1,1),
d = c(1,2,3,1,2),
c = c(8,8,8,9,9),
v = c(6,6,6,6,6))
dt2 <- data.table(s = c(1,1,1),
d = c(1,2,3))
我正在努力得到这个结果
dt3 <- data.table(s = c(1,1,1,1,1,1),
d = c(1,2,3,1,2,3),
c = c(8,8,8,9,9,9),
v = c(6,6,6,6,6,NA))
但是使用
dt4 <- data.table::merge.data.table(dt2, dt1, by = c("s", "d"), all = TRUE)
但是 dt4 缺少最后一个条目
6: 1 3 9 NA
有什么建议吗?
这是一个两步解决方案——当然可以合并为一个步骤。
步骤#1:
dt4 <- unique(dt1[,.(s, c)])[dt2, on = .(s), all = TRUE]
和步骤#2:
dt5 <- dt1[dt4, on = .(s, d, c)][order(s,c,d)]
导致
> dt5
s d c v
1: 1 1 8 6
2: 1 2 8 6
3: 1 3 8 6
4: 1 1 9 6
5: 1 2 9 6
6: 1 3 9 NA