如何在 r 中计算工作日(附示例)


您可以使用 R 中的bizdays包函数快速添加、减去和计算 R 中两个日期之间的工作日数。

以下示例展示了如何在实践中使用这些功能。

示例 1:计算 R 中两个日期之间的工作日数

要计算 R 中两个日期之间的工作日数,必须首先使用bizdays包中的create.calendar()函数来创建包含工作日列表的日历:

 library (bizdays)

#create business calendar
business_calendar <- create. calendar (' my_calendar ',weekdays = c(' saturday ',' sunday '))

请注意,周末参数指定一周中的哪些天不是工作日。

然后我们可以使用bizdays()函数来计算两个特定日期之间的工作日数:

 library (bizdays)

#calculate number of business days between two dates
bizdays(from = ' 2022-01-01 ', to = ' 2022-12-31 ', cal = business_calendar)

[1] 259

从结果中我们可以看到,01/01/2022 到 12/31/2022 之间有259 个工作日。

示例 2:R 中的日期加减工作日

假设我们在 R 中有以下数据框,其中包含有关商店在不同日期的总销售额的信息:

 #make this example reproducible
set. seeds (1)

#create data frame
df <- data. frame (date = as.Date (' 2022-01-01 ') + 0:249,
                 sales = runif(n=250, min=1, max=30))

#view head of data frame
head(df)

        dirty date
1 2022-01-01 8.699751
2 2022-01-02 11.791593
3 2022-01-03 17.612748
4 2022-01-04 27.338026
5 2022-01-05 6.848776
6 2022-01-06 27.053301

我们可以使用bizdays包中的offset()函数为每个日期添加 10 个工作日:

 library (bizdays)

#create business calendar
business_calendar <- create. calendar (' my_calendar ',weekdays = c(' saturday ',' sunday '))

#add 10 business days to each date
df$date <- bizdays::offset(df$date, 10 , cal = business_calendar)

#view updated head of data frame
head(df)

        dirty date
1 2022-01-14 8.699751
2 2022-01-14 11.791593
3 2022-01-17 17.612748
4 2022-01-18 27.338026
5 2022-01-19 6.848776
6 2022-01-20 27.053301

请注意,每个日期都添加了 10 个工作日。

要减去工作日,只需在offset()函数中使用负数即可。

例如,以下代码显示如何从每个日期减去 10 个工作日:

 library (bizdays) 

#create business calendar
business_calendar <- create. calendar (' my_calendar ',weekdays = c(' saturday ',' sunday '))

#subtract 10 business days to each date
df$date <- bizdays::offset(df$date, - 10 , cal = business_calendar)

#view updated head of data frame
head(df)

        dirty date
1 2021-12-20 8.699751
2 2021-12-20 11.791593
3 2021-12-20 17.612748
4 2021-12-21 27.338026
5 2021-12-22 6.848776
6 2021-12-23 27.053301

请注意,每个日期都减去了 10 个工作日。

注意:您可以在此处找到bizdays包的完整文档。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在R中将日期转换为数字
如何从R中的日期中提取月份
如何在 R 中为日期添加和减去月份

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注