我正在尝试在R中对一组中等大小的数据集进行数据分析。我需要做的一项分析要求我在大约24-48个文件之间进行完全外部联接,每个文件都有大约60列和最多450,000行。因此,我经常遇到内存问题。

我以为在ffbase或sqldf会有所帮助,但是显然其中任何一个都不可能进行完全外部联接。

有解决方法吗?我还没有找到一个包裹?

最佳答案

这是一个简单的示例,说明了如何进行多个数据集的外部联接:

library(sqldf)
dat1 <- data.frame(x = 1:5,y = letters[1:5])
dat2 <- data.frame(w = 3:8,z = letters[3:8])
>
> sqldf("select * from dat1 left outer join dat2 on dat1.x = dat2.w UNION
+       select * from dat2 left outer join dat1 on dat1.x = dat2.w")
  x y  w    z
1 1 a NA <NA>
2 2 b NA <NA>
3 3 c  3    c
4 4 d  4    d
5 5 e  5    e
6 6 f NA <NA>
7 7 g NA <NA>
8 8 h NA <NA>

它是一个完整的外部联接,使用 sqldf 和SQLite作为后端。

正如我还提到的, sqldf 比SQLite支持更多的后端。一次Google搜索显示,MySQL中的exact same way完全实现了外部联接。我对postgres不太熟悉,但是this问题肯定表明在那里也可以进行完全外部联接。

关于r - 如何在R中执行大型数据集的完全外部联接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16964799/

10-11 11:11