【发布时间】:2018-10-24 12:44:50
【问题描述】:
我可以在 SO 上找到很多关于将子集日期处理到某个工作日的信息(例如 Get Dates of a Certain Weekday from a Year in R)。但是,我找不到任何实现我想要的后备逻辑的方法。具体来说,如果给定的一周中不存在给定的工作日,我想获取下一个可用的日期,不包括周六和周日。
例如,从日期向量中,我想选择与星期四对应的所有日期。但是,在没有星期四的几周内,我应该选择下一个工作日的日期。在下面的示例中,这是第二天,星期五。
library(lubridate)
# Create some dates
dates <- seq.Date(as.Date("2017-11-16"), as.Date("2017-11-24"), by = 1)
# Remove Thursday, November 23
dates <- dates[dates != as.Date("2017-11-23")]
# Get all Thursdays in dates
dates[wday(dates) == 5]
# [1] "2017-11-16"
# Desired Output:
# Because Thursday 2017-11-23 is missing in a week,
# we roll over and select Friday 2017-11-24 instead
# [1] "2017-11-16" "2017-11-24"
注意 1:对于缺少星期四和星期五的给定一周,我想滚动到星期一。基本上,对于没有找到星期四的星期,在可用日期中获取下一个日期。
注意 2:我希望在没有任何外部依赖项的情况下完成此操作,而不是常见的 R 包,例如 lubridate 等(例如,不依赖于 c++ 库)。
我相信我可以写一些东西来做我想做的事,但是我很难找到创建简短而优雅的东西。
【问题讨论】: