以下是数据集:
内容请自行添加。
d = data.frame(date = as.Date(as.Date('2015-01-01'):as.Date('2015-04-10'), origin = "1970-01-01"),
group = rep(c('A','B','C','D'), 25), value = sample(1:100))
head(d)
date group value
1: 2015-01-01 A 4
2: 2015-01-02 B 32
3: 2015-01-03 C 46
4: 2015-01-04 D 40
5: 2015-01-05 A 93
6: 2015-01-06 B 10
有没有更加优雅的方法来按组计算值的累积总和,而不是使用这个data.table的方法?
library(data.table)
setDT(d)
d.cast = dcast.data.table(d, group ~ date, value.var = 'value', fun.aggregate = sum)
c.sum = d.cast[, as.list(cumsum(unlist(.SD))), by = group]
这段代码看起来相当笨重,生成的矩阵过于平坦,需要使用dplyr::gather
或reshape2::melt
进行重新格式化。
那么R肯定有更好的解决方案了吧?
set.seed()
来使示例可重现,并且还应该包括样本输入的期望输出。 - MrFlick