La con­ver­sio­ne di data frame con melt() in R rende più facile adeguarsi ai requisiti più diversi. Molti metodi di analisi, ad esempio i modelli lineari o ANOVA, pre­di­li­go­no dati in un formato lungo perché risulta spesso più naturale e in­ter­pre­ta­bi­le.

A cosa serve melt() in R?

La funzione melt() in R è inclusa nel pacchetto reshape2 e serve alla ri­strut­tu­ra­zio­ne di data frame, in par­ti­co­la­re per il passaggio da un formato largo a uno lungo. Nel formato largo, le variabili sono or­ga­niz­za­te come colonne separate, mentre il formato lungo offre una migliore rap­pre­sen­ta­zio­ne per analisi e vi­sua­liz­za­zio­ni.

La funzione melt() in R è uno strumento fon­da­men­ta­le per la tra­sfor­ma­zio­ne dei dati. L’utilizzo di melt() è par­ti­co­lar­men­te im­por­tan­te nei casi in cui le in­for­ma­zio­ni sono di­spo­ni­bi­li in un formato largo ma per analisi o grafici specifici è richiesto un formato lungo. Questo processo di ri­strut­tu­ra­zio­ne aumenta la fles­si­bi­li­tà e l’adat­ta­bi­li­tà dei data frame per con­sen­ti­re un utilizzo ottimale di diversi strumenti di analisi in R e librerie di vi­sua­liz­za­zio­ne.

La sintassi di melt() in R

La funzione melt() in R può essere mo­di­fi­ca­ta con diversi argomenti.

melt(data.frame, na.rm = FALSE, value.name = "name", id = 'columns')
R
  • data.frame: questo è il data frame da ri­strut­tu­ra­re.
  • na.rm: un argomento opzionale che contiene il valore standard FALSE. Se impostato su TRUE, i valori mancanti (NA) vengono rimossi dal record di dati ri­strut­tu­ra­to.
  • value.name: questo argomento opzionale permette di definire il nome della colonna che contiene i valori delle variabili ri­strut­tu­ra­te nel nuovo record di dati.
  • id: un argomento opzionale che indica quali colonne devono essere mantenute come iden­ti­fi­ca­to­ri. Qui si utilizza columns come se­gna­po­sto.

L’esempio seguente chiarisce meglio il fun­zio­na­men­to:

df <- data.frame(ID = 1:3, A = c(4, 7, NA), B = c(8, NA, 5))
R

Il data frame creato si presenta così:

   ID   A     B
1  1    4     8
2  2    7  NA
3  3  NA    5
R

Ora ap­pli­chia­mo la funzione melt() e con­ver­tia­mo il data frame in un formato lungo:

melted_df <- melt(df, na.rm = FALSE, value.name = "Value", id = "ID")
R

Il data frame ri­strut­tu­ra­to melted_df si presenta così:

   ID  variable  Value
1  1            A           4
2  2            A           7
3  3            A        NA
4  1            B           8
5  2            B        NA
6  3            B           5
R

Questo risultato mostra i dati nel data frame ri­strut­tu­ra­ti in formato lungo. La colonna ID è stata con­ser­va­ta come iden­ti­fi­ca­to­re, la colonna Variable contiene i nomi originali delle colonne A e B, mentre la colonna Value mostra i relativi elementi. Poiché na.rm = FALSE, rimangono dei valori mancanti (NA).

Rimozione di NA con melt() in R

È possibile rimuovere i valori mancanti nei data frame in modo facile e veloce con l’opzione na.rm=True.

Definiamo un nuovo data frame:

df <- data.frame(ID = 1:4, A = c(3, 8, NA, 5), B = c(6, NA, 2, 9), C = c(NA, 7, 4, 1))
R

La sua forma è la seguente:

    ID    A     B      C
1   1     3     6    NA
2   2     8   NA      7
3   3   NA    2       4
4   4     5     9       1
R

Quindi tra­sfor­mia­mo il data frame con melt():

melted_df <- melt(df, na.rm = TRUE, value.name = "Value", id = "ID")
R

Il nuovo data frame melted_df è ora di­spo­ni­bi­le in forma lunga e senza valori NA:

     ID    variable  Value
1    1              A          3
2    2              A          8
3    4              A          5
4    1              B          6
5    3              B          2
6    4              B          9
7    2             C          7
8    3             C          4
9    4             C          1
R
Consiglio

Se desideri lavorare con la ma­ni­po­la­zio­ne di stringhe in R, ti con­si­glia­mo di seguire i tutorial substring() in R e paste() in R nella nostra guida.

Web Hosting
Miglior Hosting per il tuo sito web o negozio
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana
Vai al menu prin­ci­pa­le