Gestione di date e orari
Lezione 13 di 14 del corso Manipolazione dei dati in R di Coddy.
Il linguaggio fornisce funzioni e classi integrate per lavorare in modo efficiente con gli oggetti data-ora.
Classi di data e ora in R
R dispone di tre classi principali per lavorare con date e orari:
Date: rappresenta date senza orariPOSIXct: rappresenta date e orari come numero di secondi trascorsi dal 1º gennaio 1970POSIXlt: rappresenta date e orari come elenco di componenti (anno, mese, giorno ecc.)
Creare oggetti data-ora
Puoi creare oggetti data-ora usando le seguenti funzioni:
# Crea un oggetto Date
today <- Sys.Date()
# Crea un oggetto POSIXct
now <- Sys.time()
# Converti una stringa in un oggetto Date
date_from_string <- as.Date("2023-06-15")
# Converti una stringa in POSIXct
datetime_from_string <- as.POSIXct("2023-06-15 14:30:00")Formattare oggetti data-ora
Usa format() per convertire gli oggetti data-ora in stringhe:
date <- as.Date("2023-06-15")
formatted_date <- format(date, "%B %d, %Y") # Restituisce: "June 15, 2023"Analizzare stringhe data-ora
Per analizzare le stringhe data-ora, usa as.Date() o as.POSIXct() con una stringa di formato:
date_string <- "15/06/2023"
parsed_date <- as.Date(date_string, format = "%d/%m/%Y")Calcoli con date e orari
R consente di eseguire operazioni aritmetiche sugli oggetti data-ora:
today <- Sys.Date()
next_week <- today + 7 # Aggiungi 7 giorni
time_diff <- as.numeric(next_week - today) # Ottieni la differenza in giorniEstrarre i componenti
Puoi estrarre componenti specifici dagli oggetti data-ora:
date <- as.Date("2023-06-15")
year <- format(date, "%Y")
month <- format(date, "%m")
day <- format(date, "%d")
hour <- format(date, "%H")
minute <- format(date, "%M")
second <- format(date, "%S")Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Sfida
MedioCrea una funzione che elabori un elenco di eventi con le relative date e orari. La funzione deve eseguire le seguenti operazioni:
- Convertire la stringa di input in un data frame
- Analizzare la colonna 'datetime' e convertirla in oggetti POSIXct
- Estrarre il giorno della settimana per ogni evento
- usa la funzione
weekdays(). Per esempio:weekdays(date)
- usa la funzione
- Calcolare la durata in ore tra ogni evento e il primo evento
Per ottenere la prima data e ora, usa:
mutate( datetime = as.POSIXct(datetime, format = "%Y-%m-%d %H:%M:%S"), first_date = min(datetime), ... )
- Formattare la colonna 'datetime' per visualizzare solo la data nel formato "YYYY-MM-DD"
- Creare una nuova colonna
time_categoryin base all'ora dell'evento:- Se l'ora è compresa tra 5 e 11 (inclusi), impostare il valore su "Morning"
- Se l'ora è compresa tra 12 e 16 (inclusi), impostare il valore su "Afternoon"
- Se l'ora è compresa tra 17 e 20 (inclusi), impostare il valore su "Evening"
- Altrimenti, impostare il valore su "Night"
- Ordinare il data frame in base al datetime originale
- Stampare il data frame risultante contenente solo le seguenti colonne (in quest'ordine):
event, datetime, day_of_week, duration_hours, date, time_category
Provalo tu
# Leggi l'input
con <- file("stdin", "r")
input_data <- suppressWarnings(readLines(con))
# Converti la stringa di input in un data frame
events_df <- read.csv(text = input_data, stringsAsFactors = FALSE)
# TODO: Scrivi il codice qui sotto per elaborare il data frame degli eventi
# 1. Converti la colonna 'datetime' in oggetti POSIXct
# 2. Estrai il giorno della settimana per ogni evento
# 3. Calcola la durata in ore tra ogni evento e il primo evento
# 4. Formatta la colonna 'datetime' per mostrare solo la data nel formato "YYYY-MM-DD"
# 5. Crea una nuova colonna 'time_category' in base all'ora dell'evento
# 6. Ordina il data frame in base al datetime originale
# Stampa il data frame risultante
print(events_df)Tutte le lezioni di Manipolazione dei dati in R
Esercitati da solo: Compilatore R online