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
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • 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