Я использую данные рабочей нагрузки для вычисления 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 дат для этого конкретного уникального идентификатора.