Один ко многим Присоединиться в data.table - PullRequest
0 голосов
/ 09 мая 2018

Я использую 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)

Я хочу сделать соединение много к одному (b к a) на основе столбца x.

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

Однако этот подход создает новую таблицу данных с именем c, вместо создания новой таблицы данных, я использую следующий код для добавления столбца y с помощью b.

b[a,y:=i.y]

Теперь b выглядит,

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

Желаемый результат - тот, который указан в первом методе (c). Есть ли способ использовать := и выводить все строки вместо одной последней строки?

PS: причина, по которой я хочу использовать метод 2 с использованием :=, заключается в том, что мои данные огромны, и я не хочу делать копии. Пример, который я показал, отражает то, что происходит в моих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...