6

如何将 R 包 zoo 或 xts 用于非常大的数据集?(100GB) 我知道有一些包比如 bigrf, ff, bigmemory 可以处理这个问题,但是你必须使用它们有限的命令集,它们没有 zoo 或 xts 的功能,我不知道如何制作 zoo 或 xts 来使用它们。我该如何使用它?

我已经看到还有其他一些与数据库相关的东西,例如 sqldf 和 hadoopstreaming、RHadoop 或 Revolution R 使用的其他一些东西。你有什么建议?还有其他的吗?

我只想聚合系列,清理并执行一些协整和绘图。我不希望每次都使用小块数据为我需要的每个命令编写和实现新功能。

补充:我在Windows上

4

1 回答 1

2

我也遇到过类似的问题(尽管我只玩了 9-10 GB)。我的经验是,R 无法单独处理这么多数据,尤其是因为您的数据集似乎包含时间序列数据。

如果您的数据集包含很多零,您可以使用稀疏矩阵来处理它 - 请参阅Matrix包(http://cran.r-project.org/web/packages/Matrix/index.html);本手册也可能派上用场(http://www.johnmyleswhite.com/notebook/2011/10/31/using-sparse-matrices-in-r/

我使用了 PostgreSQL——相关的 R 包是RPostgreSQLhttp://cran.r-project.org/web/packages/RPostgreSQL/index.html)。它允许您查询您的 PostgreSQL 数据库;它使用 SQL 语法。数据作为数据帧下载到 R 中。它可能很慢(取决于查询的复杂性),但它很健壮并且可以方便地进行数据聚合。

缺点:您需要先将数据上传到数据库中。您的原始数据需要干净并以某种可读格式(txt/csv)保存。如果您的数据尚未采用合理的格式,这可能是最大的问题。然而,将“行为良好”的数据上传到数据库很容易(参见http://www.postgresql.org/docs/8.2/static/sql-copy.html如何将 CSV 文件数据导入 PostgreSQL 表?

我建议您使用 PostgreSQL 或任何其他关系数据库来完成您的任务。我没有尝试 Hadoop,但使用 CouchDB 几乎让我走弯路。坚持使用良好的旧 SQL

于 2013-09-24T01:13:33.040 回答