Menu
Coddy logo textTech

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 orari
  • POSIXct: rappresenta date e orari come numero di secondi trascorsi dal 1º gennaio 1970
  • POSIXlt: 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 giorni

Estrarre 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")
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

challenge icon

Sfida

Medio

Crea una funzione che elabori un elenco di eventi con le relative date e orari. La funzione deve eseguire le seguenti operazioni:

  1. Convertire la stringa di input in un data frame
  2. Analizzare la colonna 'datetime' e convertirla in oggetti POSIXct
  3. Estrarre il giorno della settimana per ogni evento
    • usa la funzione weekdays(). Per esempio: weekdays(date) 
  4. 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),
      	...
      )
  5. Formattare la colonna 'datetime' per visualizzare solo la data nel formato "YYYY-MM-DD"
  6. Creare una nuova colonna time_category in 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"
  7. Ordinare il data frame in base al datetime originale
  8. 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