Я использую 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 с использованием :=
, заключается в том, что мои данные огромны, и я не хочу делать копии. Пример, который я показал, отражает то, что происходит в моих данных.