我已经搜索了这个简单问题的答案,但找不到类似的问题。我有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没有人为信息
提前感谢您提供任何帮助
答案 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
内部表始终是执行外部联接的内部表,因此这种嵌套可确保具有超级索引值集的表始终是内部表。