Jak obliczyć dni robocze w r (z przykładami)
Możesz użyć funkcji pakietu bizdays w R, aby szybko dodawać, odejmować i liczyć liczbę dni roboczych między dwiema datami w R.
Poniższe przykłady pokazują, jak wykorzystać te funkcje w praktyce.
Przykład 1: Policz liczbę dni roboczych pomiędzy dwiema datami w R
Aby policzyć liczbę dni roboczych pomiędzy dwiema datami w R, musisz najpierw użyć funkcji create.calendar() z pakietu bizdays , aby utworzyć kalendarz zawierający listę dni roboczych:
library (bizdays)
#create business calendar
business_calendar <- create. calendar (' my_calendar ',weekdays = c(' saturday ',' sunday '))
Należy pamiętać, że argument weekendy określa, które dni tygodnia nie są dniami roboczymi.
Możemy następnie użyć funkcji bizdays() , aby policzyć liczbę dni roboczych pomiędzy dwiema określonymi datami:
library (bizdays)
#calculate number of business days between two dates
bizdays(from = ' 2022-01-01 ', to = ' 2022-12-31 ', cal = business_calendar)
[1] 259
Z wyniku widzimy, że między 01.01.2022 a 31.12.2022 jest 259 dni roboczych.
Przykład 2: Dodawanie i odejmowanie dni roboczych od daty w R
Załóżmy, że mamy w R następującą ramkę danych zawierającą informacje o łącznej sprzedaży zrealizowanej w sklepie w różnych datach:
#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
Możemy użyć funkcji offset() z pakietu bizdays , aby dodać 10 dni roboczych do każdej daty:
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
Należy pamiętać, że do każdej daty dodano 10 dni roboczych.
Aby odjąć dni robocze, po prostu użyj liczby ujemnej w funkcji offset() .
Na przykład poniższy kod pokazuje, jak odjąć 10 dni roboczych od każdej daty:
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
Należy pamiętać, że od każdej daty odjęto 10 dni roboczych.
Uwaga : pełną dokumentację pakietu bizdays znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:
Jak przekonwertować datę na liczbę w R
Jak wyodrębnić miesiąc z daty w R
Jak dodawać i odejmować miesiące do daty w R