【问题标题】:cast function is extremely memory consuming, how to handle it?cast函数非常消耗内存,如何处理呢?
【发布时间】:2016-07-04 16:56:36
【问题描述】:

我有一张桌子看起来像:

date    item_id    store_id   sale_num
1/1/15    33         1          10
1/1/15    33         2          12
1/1/15    33         3          15
1/1/15    44         1          54
1/1/15    44         3          66 
1/2/15    33         1          14
....  

我想对表进行强制转换,以便将 store_id 放入多个列中,并且 value 是 sale_num。表格应该是这样的:

date    item_id   store1   store2   store3  
1/1/15   33         10       12       15
1/1/15   44         54       NA       66
1/2/15   33         14       NA       NA
......

当我在小范围内使用强制转换函数执行此操作时,原始表中的 1000 行,没有问题。

但是,原始表有 38,000,000 行并在 R 中消耗 1.5 GB 内存。 当我使用 cast 函数时,该函数消耗大约 34 GB 内存,并且它会无限运行。

它有什么问题?有没有其他办法?

【问题讨论】:

    标签: r dataframe aggregation


    【解决方案1】:

    我们可以使用data.table 中的dcast。它应该比来自reshapecast 更有效。我们将“data.frame”转换为“data.table”(setDT(df1)),然后使用dcast

    library(data.table)
    dcast(setDT(df1), date+item_id~ paste0("store", 
                  store_id), value.var="sale_num")
    #      date item_id store1 store2 store3
    #1: 1/1/15      33     10     12     15
    #2: 1/1/15      44     54     NA     66
    #3: 1/2/15      33     14     NA     NA
    

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      相关资源
      最近更新 更多