我的数据库中有三个以上的表(t1,t2,t3)。我在 R 中使用 RSQLite。这些数据库由数据框组成。
+t1
fileA valA
a 12
b 34
c 78
d 98
+t2
fileB valB
b 45
e 45
f 452
g 6
d 89
+t3
fileC valC
a 45
b 34
g 45
i 3
q 3
让我们从简单的场景开始(实际上,我有 16 个以 GB 为单位的表要加入),我想以下列方式将上述 3 个表连接在一起。
预期结果
valA valB valC
a 12 NA 45
b 34 45 34
c 78 NA NA
d 98 89 NA
e NA 45 NA
f NA 452 NA
.........
我使用了以下命令,但没有得到两个表的预期结果:
res <-dbSendQuery(con,"SELECT fileA,fileB,valA,valB from t1 LEFT OUTER JOIN t2 On t11.fileA= t2.fileB UNION select fileA,fileB,valA,valB from t2 LEFT OUTER JOIN t1 ON t11.fileA= t2.fileB")
上述命令的输出
fileA fileB valA valB
1 <NA> e <NA> 45
2 <NA> f <NA> 452
3 <NA> g <NA> 6
4 a <NA> 12 NA
5 b b 34 45
6 c <NA> 78 NA
7 d d 98 89
因此,如果我可以加入输出的前两列,我可以使用上述命令。(删除所有 NA 并仅保留名称,正如我在预期结果中提到的那样)
否则,如果有人能告诉我如何加入三个以上的表,那将会很有帮助。RSQLite 不支持 RIGHT 和 FULL OUTER JOIN