Gestione delle date in R

Le date in R sono rappresentate tramite la classe Date, orari e intervalli di tempo con le classi POSIXct o POSIXlt.
Le date sono rappresentate dal numero di giorni dal 1970-01-01 (con valori negativi per date precedenti) mentre gli orari e intervalli sono memorizzati internamente come il numero di secondi trascorsi dal 1/1/1970.

# as.Date( ) converte una stringa in data
mydates <- as.Date(c("2017-04-05", "2014-04-05"))
# numero di giorni da 04/05/17 e 04/05/14
days <- mydates[1] - mydates[2]

Sys.Date() restituisce la data di oggi.
date() restituisce la data e l’ora correnti.
I simboli seguenti con la funzione format() servono per stampare le date nel formato desiderato

Simbolo Significato Esempio
%d Giorno come (0-31) 01-31
%a
%A
giorno della settimana abbreviato
giorno della settimana non abbreviato
Mon
Monday
%m mese (00-12) 00-12
%b
%B
mese abbreviato mese non abbreviato Jan
January
%y
%Y
2-cifre anno 
4- cifre anno
07
2007

Ecco un esempio

>today <- Sys.Date()
> format(today, format="%B %d %Y")
[1] "December 04 2018"

Conversioni delle date in R

È possibile utilizzare la funzione as.Date()

per convertire character in date.

Il formato è as.Date (x, “format”),

strDates <- c("01/05/1965", "08/16/1975")
dates <- as.Date(strDates, "%m/%d/%Y")

Per quanto riguarda la conversione tra tipi di oggetto date in character

strDates <- as.character(dates)

Consultare help(as.Date) e help(strftime) per avere maggiori dettagli sulla conversione dei character in date e help(ISOdatetime) per ulteriori informazioni sulla formattazione di data/ora.

POSIXct e POSIXlt

Orari e intervalli di tempo sono rappresentate utilizzando le classi POSIXct e POSIXlt.

> now<-Sys.Date()
> d1<- as.Date(now)
> class(d1)
[1] "Date"
> d2<-as.POSIXct(now)
> class(d2)
[1] "POSIXct" "POSIXt"
> as.POSIXlt(now,"GMT") # tiene conto del fuso orario
[1] "2018-12-04 UTC"
> as.POSIXlt(now, "Australia/Darwin") # potrebbe non funzionre su alcuni OS
[1] "2018-12-04 UTC"
> unlist(as.POSIXlt(now)) # scomposizione della data
sec min hour mday mon year wday yday isdst
0 0 0 4 11 118 2 337 0

Alcune funzioni utili

t1 <- Sys.time()
> weekdays(t1) #restituisce il giorno della settimana
[1] "Tuesday"
> months(t1) # restituisce il nome del mese
[1] "December"
> quarters(t1) # restituisce il numero del quadrimestre (“Q1”, “Q2”, “Q3”,“Q4”)
[1] "Q4"
Restituisce la differenza di tempo tra due date in secondi, minuti, ore, giorni, settimane:
difftime(time1, time2, tz, units = c("auto", "secs", "mins", "hours", "days", "weeks"))

Guarda tutti i tutorial di Data input oppure torna su R tutorial.

Immagine di pch.vector su Freepik

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Iscriviti alla nostra newsletter

Tieniti aggiornato sulle ultime novità riguardo la XAI e il Deep Learning.