13

我刚刚花了一些时间研究data.tableR 并且想知道在什么条件下我可以期望获得最大的性能提升。也许简单的答案是当我有一个大的 data.frame 并且经常在这个 data.frame 的子集上操作时。当我只是加载数据文件和估计模型时,我不能期待太多,但许多[操作会有所作为。这是真的,唯一的答案还是我应该考虑什么?什么时候开始重要?10x5、1,000x5、1,000,000x5?

编辑:一些评论表明这data.table通常更快,同样重要的是,几乎从不慢。所以知道什么时候不使用也很好data.table

4

2 回答 2

10

至少有几种情况会data.table大放异彩:

  • 使用新结果更新现有数据集。因为data.table是按引用的,所以速度要快得多
  • Split-apply-combine 类型策略与大量组进行拆分(正如@PaulHiemstra 的回答所指出的那样)。
  • 对真正的大型数据集执行几乎任何操作。

以下是一些基准: 基准 data.frame (base)、data.frame(package dataframe) 和 data.table

于 2012-12-06T19:21:52.927 回答
7

一个data.table非常快速的例子是成名的拆分应用组合类型的工作plyr。假设您有data.frame以下数据:

precipitation     time   station_id
23.3              1      A01
24.1              2      A01
26.1              1      A02
etc etc

当您需要对每个站点 id 进行平均时,您可以使用许多 R 函数,例如aveddplydata.table。如果独特元素的数量station_id增加,则可以data.table很好地扩展,而例如ddplyget 的速度非常慢。可以在我的博客上的这篇文章中找到更多详细信息,包括示例。该测试表明速度增加超过 150 倍是可能的。这种差异可能会更大......

于 2012-12-06T19:01:50.977 回答