合并两个表,但缺少一些行

问题描述 投票:0回答:1

我正在尝试连接 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

有什么建议吗?

r merge data.table
1个回答
0
投票

这是一个两步解决方案——当然可以合并为一个步骤。

步骤#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
© www.soinside.com 2019 - 2024. All rights reserved.