滾子data.table聚集我沿着這些線路與日期
d1 <- data.frame(
cat1 = sample(c('a', 'b', 'c'), 100, replace = TRUE),
date = rep(Sys.Date() - sample(1:100)),
val = rnorm(100, 50, 5)
)
require(data.table)
d2 <- data.table(d1)
一組數據,我可以每天和沒有問題
d2[ , list(.N, sum(val)), by = c("cat1", "date")]
我希望得到一個求和2天(和然後7天)
這工作:
d.list <- sort(unique(d2$date))
o.list <- list()
for(i in seq_along(d.list)){
o.list[[i]] <- d2[d2$date >= d.list[i] - 1 & d2$date <= d.list[i], list(.N, sum(val), max(date)), by = c("cat1")]
}
do.call(rbind, o.list)
但是減慢了一個更大的數據集,並且似乎並不是data.table的最佳用法。
有沒有更高效的方法?
首先,你需要什麼'N'列?對於每日總和只是做'd2 < - setDT(d1)[,sum(val),by = c(「cat1」,「date」)]' –