Menu
Coddy logo textTech

Dal formato wide al formato long

Lezione 9 di 14 del corso Manipolazione dei dati in R di Coddy.

In questa lezione ci concentreremo sull'uso della funzione pivot_longer() del pacchetto tidyr per convertire i dati dal formato largo a quello lungo.

Comprendere i formati largo e lungo

Formato largo: ogni variabile ha una propria colonna.
Formato lungo: le variabili sono memorizzate in coppie chiave-valore, con una colonna per i nomi delle variabili e un'altra per i valori.

La funzione pivot_longer()

La funzione pivot_longer() di tidyr viene usata per trasformare i dati dal formato largo a quello lungo. Ecco la sua sintassi di base:

pivot_longer(data, cols, names_to = "key", values_to = "value")

Esempio:

# Load required library
library(tidyr)

# Create a sample wide format dataset
wide_data <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  math = c(85, 76, 90),
  science = c(92, 88, 75),
  history = c(78, 82, 85)
)

# Convert to long format
long_data <- pivot_longer(wide_data, 
                          cols = c(math, science, history),
                          names_to = "subject",
                          values_to = "score")

print(long_data)

Output:

# Una tibble: 9 × 3
  name    subject score
  <chr>   <chr>   <dbl>
1 Alice   math       85
2 Alice   science    92
3 Alice   history    78
4 Bob     math       76
5 Bob     science    88
6 Bob     history    82
7 Charlie math       90
8 Charlie science    75
9 Charlie history    85

Invece di avere 4 colonne: name, math, science e history, abbiamo 3 colonne: name, subject, score

Comprendere gli argomenti

  • cols: specifica quali colonne trasformare nel formato lungo.
  • names_to: indica il nome della nuova colonna che conterrà i nomi delle colonne del formato largo.
  • values_to: indica il nome della nuova colonna che conterrà i valori.

Importanza nell'analisi dei dati

Spesso si preferiscono i dati in formato lungo perché sono:

  • Più facili da manipolare e analizzare con strumenti come dplyr
  • Più adatti alla modellazione statistica e alla visualizzazione
  • Coerenti con i principi dei dati ordinati
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

Facile

Crea una funzione che trasformi un insieme di dati in formato largo con i punteggi degli esami degli studenti in formato lungo usando la funzione pivot_longer() del pacchetto tidyr. La funzione deve eseguire le seguenti operazioni:

  1. Convertire la stringa di input in un frame di dati
  2. Usare pivot_longer() per trasformare i dati dal formato largo al formato lungo
  3. Rinominare le colonne risultanti in "subject" e "score"
  4. Ordinare i dati per nome dello studente e poi per materia
  5. Stampare il frame di dati risultante in formato lungo

Provalo tu

# Leggi l'input
con <- file("stdin", "r")
input_string <- suppressWarnings(readLines(con))

# Converti la stringa di input in un data frame
data <- read.csv(text = input_string, stringsAsFactors = FALSE)

# Carica il pacchetto necessario
suppressPackageStartupMessages(library(tidyr))
suppressPackageStartupMessages(library(dplyr))

# TODO: Scrivi il codice qui sotto per trasformare i dati
# Usa pivot_longer() per passare dal formato largo al formato lungo
# Rinomina le colonne in "subject" e "score"
# Ordina i dati prima per nome dello studente e poi per materia


# Stampa il data frame risultante in formato lungo
print(result)

Tutte le lezioni di Manipolazione dei dati in R

Esercitati da solo: Compilatore R online