如何在 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 中执行其他常见任务: