Използвам данни за работното натоварване, за да изчисля 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 дати за този конкретен уникален идентификатор.