【问题标题】:Using R with tidyquant and massiv data使用 R 处理 tidyquant 和 massiv 数据
【发布时间】:2019-01-02 04:25:22
【问题描述】:

在使用 R 时,我遇到了一个奇怪的问题: 我正在以下列方式处理日期: 将数据从数据库读取到数据框中,填充缺失值,将数据分组并嵌套到组合主键中,创建时间序列并为每个组进行预测,取消分组和清理数据,将其写回数据库。

类似这样的: https://cran.rstudio.com/web/packages/sweep/vignettes/SW01_Forecasting_Time_Series_Groups.html

对于小型数据集,这就像一个魅力,但对于较大的数据集(超过大约 100000 个条目),我确实从 R-Studio 获得了“R Session Aborted”屏幕,并且 nativ R GUI 只是停止执行并内爆。 我查看的每个日志文件中都没有信息。我怀疑这是某种(泄漏)内存问题。

作为一种解决方法,我正在使用 for 循环分块处理数据。但无论块大小有多小,我都会看到“R Session Aborted”屏幕,这看起来很像内存泄漏。 整个日期由大约 500 万行组成。

我对@9​​87654325@、big-Family 和matter 等软件包进行了很多研究,基本上来自https://cran.r-project.org/web/views/HighPerformanceComputing.html 的所有内容 但这似乎不适用于tibblestidyverse 的数据处理方式。

那么,如何改进我的脚本以处理大量数据? 如何收集有关 R 会话中止原因的线索?

【问题讨论】:

  • 你用的是什么机器?尝试更大的;)
  • 我认为这不会有帮助,因为内存 (8 GB) 总是只有一半满。
  • 听起来你可能会从data.table 获得一些里程——Getting Started 页面有一组很好的资源。在他对规范问题data.table vs dplyr: 的回答中,Hadley 就 dplyr 的设计陈述了以下几点:“内存和性能:我将它们混为一谈,因为对我来说,它们并不那么重要”我> 。底线是,如果您尝试使用大型数据集,dplyrtibbles 和其他“整洁”的结构会妨碍您。
  • 感谢您的洞察,但是如果没有 tidy Universe,我如何执行如此复杂的数据操作?

标签: r large-data tidyverse


【解决方案1】:

查看文章:

datascience.la/dplyr-and-a-very-basic-benchmark

有一个表格显示了您正在执行的一些数据整理任务的运行时比较。从表中可以看出,后面带有 data.table 的 dplyr 可能会比后面带有 dataframe 的 dplyr 做得更好。

还有一个用于制作表格的基准代码的链接。

简而言之,尝试添加一个键,并尝试在数据帧上使用 data.table。

要将x 设为您的密钥,并假设您的data.table 名为dt,请使用setkey(dt,x)

【讨论】:

【解决方案2】:

虽然 Pakes 的回答涉及所描述的问题,但我找到了解决根本问题的方法。出于兼容性原因,我在 3.4.3 版本中使用了 R。现在我正在使用更新的 3.5.1 版本,它工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2014-09-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2017-04-10
    • 2012-01-10
    相关资源
    最近更新 更多