Я использую данные о рабочей нагрузке для вычисления 3 показателей - Daily
, 7-Day rolling
(сумма за последние 7 дней) 28-Day Rolling Average
(сумма за последние 28 дней / 4).
Я смог вычислить Daily
, но мне нужны мои 7-Day rolling
и 28-Day Rolling Average
, и у меня возникли проблемы. У меня есть 17 уникальных идентификаторов для каждой даты (диапазон дат от 2018-08-09
до 2018-12-15
).
library(dplyr)
library(tidyr)
library(tidyverse)
library(zoo)
Post_Practice <- read.csv("post.csv", stringsAsFactors = FALSE)
Post_Data <- Post_Practice[, 1:3]
DailyLoad <- Post_Data %>%
group_by(Date, Name) %>%
transmute(Daily = sum(DayLoad)) %>%
distinct(Date, Name, .keep_all = TRUE) %>%
mutate('7-day' = rollapply(Daily, 7, sum, na.rm = TRUE, partial = TRUE))
Вход:
Date Name DayLoad
2018-08-09 Athlete 1 273.92000
2018-08-09 Athlete 2 351.16000
2018-08-09 Athlete 3 307.97000
2018-08-09 Athlete 1 434.20000
2018-08-09 Athlete 2 605.92000
2018-08-09 Athlete 3 432.87000
Ввод выглядит так до 2018-12-15
. Некоторые даты содержат несколько данных (как указано выше), а некоторые содержат только одну запись.
Этот код создает столбец 7-day
, но показывает тот же номер, что и Daily
, то есть:
Date Name Daily 7-day
<chr> <chr> <dbl> <dbl>
1 2018-08-09 Athlete 1 708. 708.
2 2018-08-09 Athlete 2 957. 957.
3 2018-08-09 Athlete 3 741. 741.
Цель состоит в том, чтобы финальный стол (то есть через 7 дней) выглядел следующим образом:
Date Name Daily 7-day
<chr> <chr> <dbl> <dbl>
1 2018-08-15 Athlete 1 413. 3693.
2 2018-08-15 Athlete 2 502. 4348.
3 2018-08-15 Athlete 3 490. 4007.
Где Daily
- это сумма этой конкретной даты, а 7-Day
- сумма последних 7 дат для этого конкретного уникального идентификатора.