У меня есть следующий набор данных, который описывает общее количество часов тренировок, завершенных каждую неделю, со ссылкой на дату окончания недели. Недели с понедельника по воскресенье, поэтому даты WeekEnding
с интервалом в 7 дней.
df<- structure(list(WeekEnding = c("2020-03-08", "2020-03-15", "2020-03-22",
"2020-03-29", "2020-04-05", "2020-04-12", "2020-04-19", "2020-04-26"
), TotalTraining.hrs = c(14.119574637, 15.560762437, 14.160377084,
16.968056203, 14.617250934, 10.865982397, 14.619121779, 13.135129677
)), row.names = c(NA, 8L), class = c("grouped_df", "tbl_df",
"tbl", "data.frame"))
Эти данные будут обновляться каждую неделю. Я хотел бы иметь возможность сравнить общее количество часов обучения за последнюю неделю с предыдущей неделей. Я могу легко получить общее количество часов тренировок за последнюю неделю (т.е. максимальную неделю).
df$TotalTraining.hrs[df$WeekEnding == max(df$WeekEnding)]
[1] 13.13513
И я могу вручную ввести дату для получения предыдущей недели
> df$TotalTraining.hrs[df$WeekEnding == "2020-04-19"]
[1] 14.61912
Однако, поскольку данные будут регулярно обновляться, я хотел бы иметь возможность ссылаться на предыдущую неделю от самой последней недели без необходимости вручную вводить дату.
> df$TotalTraining.hrs[df$WeekEnding == (max(df$WeekEnding)- 7)]
Error in max(df$WeekEnding) - 7 : non-numeric argument to binary operator
Есть ли решение для этого? Спасибо