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

标签 r lubridate

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

相关文章:

r - 如何使用文本绘制水平而不是因子变量 rpart 的标签/索引?

r - ggplot2: scale_*_time 格式不正确

r - R 中支持向量机和朴素贝叶斯分类器的可变重要性

r - 如何从一年中的某一天获取日期

r - 如何从R中具有月份名称的时间戳中提取日期

r - 从时间戳提取日期的最简单方法

删除年月值中个位数月份的前导零

r - 删除具有多个分组条件的重复项

在 data.table 中按组进行回归和汇总统计

r - 在 R 中创建多个网络并循环它们