Come rimodellare i dati tra formati larghi e lunghi in r


Un frame di dati in R può essere visualizzato in un formato ampio o lungo .

A seconda del tuo scopo, potresti volere che il frame di dati sia in uno di questi formati specifici.

Il modo più semplice per rimodellare i dati tra questi formati è utilizzare le seguenti due funzioni del pacchetto Tidyr in R:

  • pivot_longer() : rimodella un blocco di dati dal formato largo al formato lungo.
  • pivot_wider() : rimodella un blocco di dati dal formato lungo al formato largo.

Gli esempi seguenti mostrano come utilizzare nella pratica ciascuna funzione.

Esempio 1: rimodellare i dati da larghi a lunghi

Supponiamo di avere il seguente frame di dati in R che attualmente è in formato wide:

 #create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D'),
                 year1=c(12, 15, 19, 19),
                 year2=c(22, 29, 18, 12))

#view data frame
df

  player year1 year2
1 to 12 22
2 B 15 29
3 C 19 18
4 D 19 12

Possiamo usare la funzione pivot_longer() per ruotare questo frame di dati in un formato lungo:

 library (tidyr)

#pivot the data frame into a long format
df %>% pivot_longer(cols=c(' year1 ', ' year2 '),
                    names_to=' year ',
                    values_to=' points ')

# A tibble: 8 x 3
  player year points
      
1 A year1 12
2 A year2 22
3 B year1 15
4 B year2 29
5 C year1 19
6 C year2 18
7 D year1 19
8 D year2 12

Tieni presente che i nomi delle colonne anno1 e anno2 vengono ora utilizzati come valori in una nuova colonna denominata “anno” e i valori di quelle colonne originali vengono inseriti in una nuova colonna denominata “punti”.

Il risultato finale è un lungo frame di dati.

Nota : puoi trovare la documentazione completa per la funzione pivot_longer() qui .

Esempio 2: rimodellare i dati da lunghi a larghi

Supponiamo di avere il seguente frame di dati in R che attualmente è in un formato lungo:

 #create data frame
df <- data. frame (player=rep(c('A', 'B'), each= 4 ),
                 year=rep(c(1, 1, 2, 2), times= 2 ),
                 stat=rep(c('points', 'assists'), times= 4 ),
                 amount=c(14, 6, 18, 7, 22, 9, 38, 4))

#view data frame
df

  player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4

Possiamo usare la funzione pivot_wider() per ruotare questo frame di dati in un formato ampio:

 library (tidyr)

#pivot the data frame into a wide format
df %>% pivot_wider(names_from = stat, values_from = amount)

# A tibble: 4 x 4
  player year points assists
         
1 A 1 14 6
2 A 2 18 7
3 B 1 22 9
4 B 2 38 4

Tieni presente che i valori nella colonna delle statistiche vengono ora utilizzati come nomi di colonna e i valori nella colonna dell’importo vengono utilizzati come valori di cella in queste nuove colonne.

Il risultato finale è un grande blocco di dati.

Nota : puoi trovare la documentazione completa per la funzione pivot_wider() qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in R:

Come contare valori univoci per gruppo in R
Come contare i valori non NA in R
Come creare tabelle di frequenza relativa in R

Aggiungi un commento

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