Рассмотрим следующий примерdplyr, lubridate: как агрегировать dataframe по неделям?
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
Я хотел бы объединить эту dataframe на неделю.
То есть, предположим, что я определяю неделю, начиная с утра понедельника и заканчивая в воскресенье вечером, которую мы назовем циклом Monday to Monday
. (что важно, я хочу иметь возможность выбирать другие соглашения, например, например, с пятницы по пятницу).
Тогда я просто хотел бы подсчитать среднее значение values
на каждую неделю.
Например, в приведенном выше примере можно вычислить среднее значение values
с понедельника с 24 февраля по воскресенье 2 марта и т. Д.
Как я могу это сделать?
Спасибо!
EDIT: благодаря всем вам, кто внес идеи. Несколько необычно, я думаю, что мое последнее решение, вероятно, более уместно. Еще раз спасибо!
'df2%>% group_by (неделя = неделя (время))%>% реферирования (значение = среднее (значения))', 'или использовать isoweek' вместо этого. – alistaire
@Frank, сделано, спасибо за замечание –
@alistaire благодарит за предложение, но ваше решение не обеспечивает контроль над недельным циклом. Скажите, что я хочу здесь с пятницы по пятницу. –