Может ли таблица данных выполнять левое соединение для трех или более таблиц данных? - программирование
Подтвердить что ты не робот

Может ли таблица данных выполнять левое соединение для трех или более таблиц данных?

Я искал ответ на этот простой вопрос, но не могу найти аналогичный вопрос. У меня есть 3 таблицы данных:

set.seed(0)
demo <- data.table(id = 1:10, demo.var = rnorm(10), key = 'id'); demo
lab <- data.table(id = 1:7, tc = rnorm(7), key = 'id'); lab
anthro <- data.table(id = 4:9, bmi = rnorm(6), key = 'id'); anthro

Все идентификаторы, которые находятся в лаборатории и anthro, находятся в таблице demo data.table, но в лаборатории и антро содержатся разные подмножества идентификаторов в демонстрации

Оба

lab[demo]
anthro[demo]

укажите информацию, которую я хочу: все 10 идентификаторов с дополнительной информацией из лабораторной или антропологической таблицы данных. Но существует ли объединение всех 3 вместе аналогичным образом? Я пробовал некоторые перестановки, такие как

anthro[lab][demo]

но это дает сохранение информации антро только для идентификаторов, которые находятся в лабораторных данных. table - нет информации антро для идентификаторов 8 и 9

Заранее благодарим за помощь

4b9b3361

Ответ 1

anthro[lab[demo]]
#      id        bmi         tc     demo.var
#   1:  1         NA  0.7635935  1.262954285
#   2:  2         NA -0.7990092 -0.326233361
#   3:  3         NA -1.1476570  1.329799263
#   4:  4 -0.8919211 -0.2894616  1.272429321
#   5:  5  0.4356833 -0.2992151  0.414641434
#   6:  6 -1.2375384 -0.4115108 -1.539950042
#   7:  7 -0.2242679  0.2522234 -0.928567035
#   8:  8  0.3773956         NA -0.294720447
#   9:  9  0.1333364         NA -0.005767173
#  10: 10         NA         NA  2.404653389

Внутренняя таблица всегда является той, на которой выполняется внешнее соединение, поэтому это вложение гарантирует, что таблица с супер-набором значений индекса всегда является внутренней таблицей.