繁体   English   中英

在R中使用ffdfdply函数进行聚合

[英]aggregation using ffdfdply function in R

我在R中使用ffdfdply函数尝试使用'ffbase'包对大型数据集进行聚合。
可以说我有三个变量,分别称为Date,Item和sales。 在这里,我想使用sum函数汇总Date和Item上的销售额。 您能否通过R中的一些正确语法指导我。
在这里,我尝试这样:

grp_qty <- ffdfdply(x=data[c("sales","Date","Item")], split=as.character(data$sales),FUN = function(data)  

summaryBy(Date+Item~sales, data=data, FUN=sum)).

感谢您的解决方案。

标记ffdfdply是ffbase的一部分,而不是ff。 要显示的ffdfdply使用的例子,让我们产生ffdf与50Mio行。

  require(ffbase)
  data <- expand.ffgrid(Date = ff(seq.Date(Sys.Date(), Sys.Date()+10000, by = "day")), Item = ff(factor(paste("Item", 1:5000))))
  data$sales <- ffrandom(n = nrow(data))
  # split by date -> assuming that all sales of 1 date can fit into RAM
  splitby <- as.character(data$Date, by = 250000)
  grp_qty <- ffdfdply(x=data[c("sales","Date","Item")], 
                      split=splitby, 
                      FUN = function(data){
                        ## This happens in RAM - containing **several** split elements so here we can use data.table which works fine for in RAM computing
                        require(data.table)
                        data <- as.data.table(data)
                        result <- data[, list(sales = sum(sales, na.rm=TRUE)), by = list(Date, Item)]
                        as.data.frame(result)
                      })
  dim(grp_qty)

标记grp_qty是驻留在磁盘上的ffdf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM