我有一长串特定程序的开始日期。规则要求该程序最多在6个工作日内完成。我希望计算截止日期。
在R中使用lubridate,我可以得到六天的截止日期
> library(lubridate)
> date.in <- dmy(c("30-8-2001", "12-1-2003", "28-2-2003", "20-5-2004"))
> date.in
[1] "2001-08-30 UTC" "2003-01-12 UTC" "2003-02-28 UTC" "2004-05-20 UTC"
> deadline.using.days <- date.in + days(6)
> deadline.using.days
[1] "2001-09-05 UTC" "2003-01-18 UTC" "2003-03-06 UTC" "2004-05-26 UTC"
有没有简单的方法可以增加六个工作日,即跳过周六和周日?
谢谢你。
最佳答案
isBizday
包中有一个漂亮的函数timeDate
,它比乍一看看上去更有趣。
date.in <- dmy(c("30-8-2001", "12-1-2003", "28-2-2003", "20-5-2004"))
这是完成工作的功能。在 future 的日子里选择
1:10
似乎是合理的,但这当然可以调整。deadline <- function(x) {
days <- x + 1:10
Deadline <- days[isBizday(as.timeDate(days))][6]
data.frame(DateIn = x, Deadline, DayOfWeek = weekdays(Deadline),
TimeDiff = difftime(Deadline, x))
}
结果如下:
library(timeDate)
Reduce(rbind, Map(deadline, as.Date(date.in)))
# DateIn Deadline DayOfWeek TimeDiff
# 1 2001-08-30 2001-09-07 Friday 8 days
# 2 2003-01-12 2003-01-20 Monday 8 days
# 3 2003-02-28 2003-03-10 Monday 10 days
# 4 2004-05-20 2004-05-28 Friday 8 days
关于r - 在lubridate中增加15个工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26749336/