For the following data set:
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
.. can anyone advise a more elegant way of calculating the total number of values โโfor a group than this data.table ) method?
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]
.. which is rather clumsy and gives a flat matrix, which requires dplyr::gather or reshape2::melt reformat.
Sure, R can do better than that?
source share