【发布时间】:2015-09-03 23:20:32
【问题描述】:
假设我有两个数据表(dt1 和 dt2),我想使用数据表获取 dt3。 A,B,C,E,F,G,H 是列名。 dt1 key是A列,dt2 key是E列。数据表有不同的行数。我想保留 DT1 中的所有列,并且只将 DT2 中的一列 (H) 添加到连接的数据表中。最终,我会将其存储为 DT1(尽管我在下面将其显示为 dt3)。
如何使用数据表实现它?我有一个带有合并 + 数据框的丑陋解决方案。
dt1
A B C
1 4 7
2 5 8
3 6 9
2 20 21
dt2
E F G H
1 10 13 16
3 12 15 18
2 11 14 17
dt3
A B C H
1 4 7 16
2 5 8 17
3 6 9 18
2 20 21 17
【问题讨论】:
-
您想要对
dt1进行左连接并添加一个新列,或者您只是想要一个外连接并创建一个新数据集?如果您正在寻找第一个选项,请尝试setkey(setDT(dt1), A) ; dt1[dt2, H := i.H] -
我试图澄清我的问题。我想保留 dt1 中的所有行和列。我只想从 dt2 添加一列。谢谢
-
那你为什么要创建
df3呢?另外,我的解决方案不适合您吗?它应该完全满足您的需求。 -
忽略 dt3 (试图让我的例子更干净)。您的解决方案有效!非常感谢...只是一个问题,为什么我们不需要为 dt2 设置密钥?是不是因为我们默认使用dt2的第一列加入?
-
是的,完全正确。不过,如果您愿意,可以通过
E键入df2以确保安全。
标签: r join merge data.table