use*_*059 6 merge join r data.table
编辑使其更清洁.假设我有两个数据表(dt1和dt2),我想使用数据表获取dt3.A,B,C,E,F,G,H是列名.dt1键是列A,dt2键是列E.数据表具有不同的行数.我想保留DT1中的所有列,并且只将一个列(H)从DT2添加到已连接的数据表中.最终,我将它存储为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
Run Code Online (Sandbox Code Playgroud)
Dav*_*urg 17
为了进行左连接到df1并添加H从列df2,你可以结合二元加入与参照更新操作(:=)
setkey(setDT(dt1), A)
dt1[dt2, H := i.H]
Run Code Online (Sandbox Code Playgroud)
使用devel版本(v> = 1.9.5)我们可以通过指定key内部setDT(由@Arun指向)使其更短
setDT(dt1, key = "A")[dt2, H := i.H]
Run Code Online (Sandbox Code Playgroud)
编辑24/7/2015
您现在可以使用新on参数运行二进制连接而无需设置键
setDT(dt1)[dt2, H := i.H, on = c(A = "E")]
Run Code Online (Sandbox Code Playgroud)