【发布时间】:2018-06-10 02:15:11
【问题描述】:
我在投射相当大的数据帧时遇到问题,遇到内存问题。或者,可能有更好的方法来做到这一点。我愿意接受任何方面的建议,以使其更好地工作。问题是这样的;
library(reshape)
dataf <- data.frame( gridID = rep(c(1,2,3,4),4000), montecarlo = rep(1:1000,each=4), number=runif(1600,0,1) )
castData <- cast(dataf, gridID ~ montecarlo, value='number')
对于我的一些数据集来说,这需要非常长的时间。假设一个数据框有 500,000 个唯一的 gridID 值,每个值有 1000 个蒙特卡罗模拟(5,000,000 行数据)。
我在写这个问题时遇到了这个错误: 聚合需要 fun.aggregate:默认使用长度
但是,编码在我的脚本中正常工作....没有错误或警告,我的较大数据帧只需要很长时间。我试图避免在值上使用函数(总和、平均值等),因为每个 gridID ~ montecarlo 只能有一个值,我认为由于计算,这也浪费了大量时间。
然后将新铸造的数据框与另一个相同格式的数据框相乘,500,000 行 1000 列的数据(每列代表蒙特卡罗迭代值),并经过更多处理。
对于处理这些大型数据帧或加快处理速度有什么建议吗?
【问题讨论】:
-
查看 data.table 库,它可以很好地处理大型集合,并且重塑工具
melt/dcast是内置方法。见this SO post
标签: r casting reshape montecarlo