我正在尝试使用 lubridate 获取一个月的最后一个工作日。我试着写
> lubridate::ceiling_date(as.Date("2023-12-22"), 'month') - lubridate::wday(1)
[1] "2023-12-31"
但我得到了该月的最后一天,在本例中是星期日。我可以编写一个带有循环的函数,不断增加 wdays() 的参数,直到到达工作日,但必须有一种更简单的方法。
提前致以衷心的感谢
托马斯·飞利浦
此函数生成该月的所有日期,然后过滤到工作日并取最大值。我很想看看是否有更简单的解决方案。
library(lubridate)
last_weekday <- function(x) {
month_days <- seq(floor_date(x, "month"), ceiling_date(x, "month") - days(1), by = "day")
max(month_days[wday(month_days, week_start = 1) < 6])
}
last_weekday(as.Date("2023-12-22"))
# [1] "2023-12-29"