Как рассчитать рабочие дни в r (с примерами)
Вы можете использовать функции пакета bizdays в R, чтобы быстро складывать, вычитать и подсчитывать количество рабочих дней между двумя датами в R.
Следующие примеры показывают, как использовать эти функции на практике.
Пример 1. Подсчитайте количество рабочих дней между двумя датами в R.
Чтобы подсчитать количество рабочих дней между двумя датами в R, вы должны сначала использовать функцию create.calendar() из пакета bizdays , чтобы создать календарь, содержащий список рабочих дней:
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 и 31.12.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
Мы можем использовать функцию offset() из пакета bizdays , чтобы добавить 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