r - 使用 RSQLite 在 R 中连接 2 个以上的表

标签 r sqlite

我的数据库中有三个以上的表(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

最佳答案

您可以将这些列与 SQLite coalesce() core function 合并:

      select coalesce(fileA,fileB),valA,valB
               from t1 LEFT OUTER JOIN t2 On t1.fileA= t2.fileB
UNION select coalesce(fileA,fileB),valA,valB
               from t2 LEFT OUTER JOIN t1 ON t1.fileA= t2.fileB

关于r - 使用 RSQLite 在 R 中连接 2 个以上的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307685/

相关文章:

r - 有条件地替换 R 中的值

r - 如何展平从 jsonlite 返回的嵌套数据帧

r - R中的更多靶心绘图

android - Sqlite Azure 移动服务 SDK 中的连接池已关闭

javascript - 如何在 PhoneGap 应用程序中使用 SQLite 数据库?

r - 为什么 R 取 1 次幂无穷大为 1?

r - 如何在 dbplyr 中使用 R 代码创建自定义 SQL 函数?

c - 体系结构 x86_64 : What could be responsible 的 undefined symbol

c++ - 在 C++ 中创建一个 sqlite3 表

node.js - Node sqlite node-gyp 构建错误 : no member named 'ForceSet' in 'v8::Object'