我的数据框如下:
office string_date A B C D E
1: 11 2010-06-01 0 0 1 0 0
2: 11 2010-06-02 0 0 0 1 0
3: 11 2010-06-03 0 0 0 1 0
4: 11 2010-06-04 0 0 0 1 0
5: 11 2010-06-05 0 0 0 1 0
6: 11 2010-06-06 0 1 0 0 0
7: 11 2010-06-07 0 1 0 0 0
8: 11 2010-06-08 0 1 0 0 0
9: 11 2010-06-09 0 1 0 0 0
10: 11 2010-06-10 0 1 0 0 0
11: 11 2010-06-11 0 1 0 0 0
12: 11 2010-06-12 0 1 0 0 0
我需要按周汇总每列的总和,而不是列出的那一天。因此,每个办公室每个星期都会留下,每列的总和。第一行是......
office week A B C D E
11 1 0 2 1 4 0
11 2 .............
我使用的是:
agg <- aggregate(list(data$A, data$B, data$C, data$D, data$E), list(office = data$office, Date = data$string_date), sum)
但是,当然这没有任何能够按周缩短日期的能力。此外,这些日期是字符串,目前不是posix。
答案 0 :(得分:1)
使用week
函数创建一个名为week
的新列,然后执行split-apply-combine:
DT[,week := week(string_date)][, lapply(.SD, sum), by = "office,week", .SDcols = 3:6]
或dplyr
:
library(dplyr)
DT %>%
group_by(office, week = week(string_date)) %>%
summarise_each(funs(sum), -string_date)