我正在使用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的原因是因为我的数据很庞大而且我不想复制。我展示的示例反映了我的数据中发生的事情。