一对多加入data.table

时间:2018-05-09 17:02:35

标签: r join data.table

我正在使用data.table进行一对多合并。输出仅显示键的每个唯一值的最后一个匹配行,而不是与所有行匹配。

a <- data.table(x = 1:2L, y = letters[1:4])
b <- data.table(x = c(1L,3L))

setkey(a,x)
setkey(b,x)

我想基于第x列进行多对一(b到a)连接。

c <- a[b,on=.(x)]
c
#    x  y
# 1: 1  a
# 2: 1  c
# 3: 3 NA

但是,这种方法创建了一个名为c的新data.table,而不是创建一个新的data.table,我使用以下代码将列y添加到b。

b[a,y:=i.y]

现在b看起来像,

b
#    x  y
# 1: 1  c
# 2: 3 NA

所需的输出是第一种方法(c)中的输出。有没有办法使用:=并输出所有行而不是最后一个匹配的行?

PS:我想使用:=使用方法2的原因是因为我的数据很庞大而且我不想复制。我展示的示例反映了我的数据中发生的事情。

0 个答案:

没有答案