数据表是否可以为3个或更多数据表执行左连接?

时间:2014-01-28 17:57:39

标签: r data.table outer-join

我已经搜索了这个简单问题的答案,但找不到类似的问题。我有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中的所有ID都在demo data.table中,但lab和anthro在demo中包含不同的ID子集

两者

lab[demo]
anthro[demo]

提供我想要的信息:所有10个ID以及来自实验室或anthro data.table的附加信息,但是有没有以类似的方式将所有3个合并在一起?我尝试了一些排列,例如

anthro[lab][demo]

但是这只保留了实验室数据中的ID的anthro信息。表格 - 对于ID 8和9没有人为信息

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:10)

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

内部表始终是执行外部联接的内部表,因此这种嵌套可确保具有超级索引值集的表始终是内部表。