Может ли таблица данных выполнять левое соединение для трех или более таблиц данных?
Я искал ответ на этот простой вопрос, но не могу найти аналогичный вопрос. У меня есть 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
Заранее благодарим за помощь
Ответы
Ответ 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
Внутренняя таблица всегда является той, на которой выполняется внешнее соединение, поэтому это вложение гарантирует, что таблица с супер-набором значений индекса всегда является внутренней таблицей.