Come calcolare i giorni lavorativi in r (con esempi)
È possibile utilizzare le funzioni del pacchetto bizdays in R per aggiungere, sottrarre e contare rapidamente il numero di giorni lavorativi tra due date in R.
I seguenti esempi mostrano come utilizzare queste funzioni nella pratica.
Esempio 1: contare il numero di giorni lavorativi tra due date in R
Per contare il numero di giorni lavorativi tra due date in R, devi prima utilizzare la funzione create.calendar() del pacchetto bizdays per creare un calendario contenente un elenco di giorni lavorativi:
library (bizdays)
#create business calendar
business_calendar <- create. calendar (' my_calendar ',weekdays = c(' saturday ',' sunday '))
Tieni presente che l’argomento weekends specifica quali giorni della settimana non sono giorni lavorativi.
Possiamo quindi utilizzare la funzione bizdays() per contare il numero di giorni lavorativi tra due date specifiche:
library (bizdays)
#calculate number of business days between two dates
bizdays(from = ' 2022-01-01 ', to = ' 2022-12-31 ', cal = business_calendar)
[1] 259
Dal risultato possiamo vedere che ci sono 259 giorni lavorativi tra il 01/01/2022 e il 31/12/2022.
Esempio 2: aggiungere e sottrarre giorni lavorativi dalla data in R
Supponiamo di avere il seguente frame di dati in R che contiene informazioni sulle vendite totali effettuate in un negozio in date diverse:
#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
Possiamo utilizzare la funzione offset() del pacchetto bizdays per aggiungere 10 giorni lavorativi a ciascuna data:
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
Tieni presente che a ciascuna data sono stati aggiunti 10 giorni lavorativi.
Per sottrarre i giorni lavorativi, utilizza semplicemente un numero negativo nella funzione offset() .
Ad esempio, il codice seguente mostra come sottrarre 10 giorni lavorativi da ciascuna data:
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
Tieni presente che da ciascuna data sono stati sottratti 10 giorni lavorativi.
Nota : puoi trovare la documentazione completa per il pacchetto bizdays qui .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in R:
Come convertire una data in numerica in R
Come estrarre il mese dalla data in R
Come aggiungere e sottrarre mesi a una data in R