gpt4 book ai didi

r - 在lubridate中增加15个工作日

转载 作者:行者123 更新时间:2023-12-04 10:04:00 25 4
gpt4 key购买 nike

我有一长串特定程序的开始日期。规则要求该程序最多在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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com