【发布时间】:2020-04-29 09:26:52
【问题描述】:
我有以下数据集,该数据集描述了每周完成的总培训时间,参考了一周结束的日期。周是从星期一到星期日,因此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
有解决办法吗? 谢谢
【问题讨论】: