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

Я искал ответ на этот простой вопрос, но не могу найти аналогичный вопрос. У меня есть 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

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

Оба

lab[demo]
anthro[demo]

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

anthro[lab][demo]

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

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


person David F    schedule 28.01.2014    source источник
comment
+1 за предоставление данных в простом формате для ответов; желаю, чтобы все сделали это.   -  person BrodieG    schedule 28.01.2014
comment
B[A] выполняет левое соединение, а не полное внешнее соединение... Если это действительно то, что вы ищете, то, возможно, вы могли бы отредактировать заголовок? (хотя здесь, поскольку demo имеет все значения, к которым вы хотите присоединиться, он работает по назначению).   -  person Arun    schedule 29.01.2014


Ответы (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

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

person BrodieG    schedule 28.01.2014
comment
спасибо - не могу поверить, насколько прост ответ и что он так очевиден после того, как мне указали - person David F; 28.01.2014