考虑下面的例子dplyr,lubridate:如何按星期汇总数据框?
library(tidyverse)
library(lubridate)
time <- seq(from =ymd("2014-02-24"),to= ymd("2014-03-20"), by="days")
set.seed(123)
values <- sample(seq(from = 20, to = 50, by = 5), size = length(time), replace = TRUE)
df2 <- data_frame(time, values)
df2 <- df2 %>% mutate(day_of_week = wday(time, label = TRUE))
Source: local data frame [25 x 3]
time values day_of_week
<date> <dbl> <fctr>
1 2014-02-24 30 Mon
2 2014-02-25 45 Tues
3 2014-02-26 30 Wed
4 2014-02-27 50 Thurs
5 2014-02-28 50 Fri
6 2014-03-01 20 Sat
7 2014-03-02 35 Sun
8 2014-03-03 50 Mon
9 2014-03-04 35 Tues
10 2014-03-05 35 Wed
我想通过周聚合该数据帧。
也就是说,假设我定义一周为周一早上开始,周末晚上结束,我们将调用Monday to Monday
周期。 (重要的是,我希望能够选择其他惯例,例如周五到周五)。
然后,我只想计算每周的values
的平均值。
例如,在上面的例子中,可以计算在2月24日星期一到3月2日星期日之间的平均值values
,依此类推。
我该怎么做?
谢谢!
编辑:感谢你们所有人提出了一个想法。有点不寻常,我认为我的晚期解决方案在这里可能更合适。再次感谢!
'DF2%>%GROUP_BY(周=星期(时间))%>%总结(值=平均(值))',或使用'isoweek'代替。 – alistaire
@Frank,完成,谢谢 –
@alistaire感谢您的建议,但是您的解决方案无法控制整周周期。假设我想要周五到周五在这里循环。 –