考慮下面的例子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感謝您的建議,但是您的解決方案無法控制整週週期。假設我想要週五到週五在這裏循環。 –