A função melt() no R re­es­tru­tura os data frames para adaptá-los a di­fe­ren­tes ne­ces­si­da­des. Muitos métodos de análise, como os modelos lineares ou ANOVA, preferem dados em formato longo, pois são mais naturais e in­ter­pre­tá­veis.

Para que serve o melt() em R?

A função melt() no R, que faz parte do pacote reshape2, é fun­da­men­tal para re­es­tru­tu­rar data frames, es­pe­ci­al­mente quando se faz a transição de um formato largo para um longo. No formato largo, as variáveis são or­ga­ni­za­das como colunas separadas, enquanto o formato longo oferece uma apre­sen­ta­ção melhorada para análise e vi­su­a­li­za­ção. Esta trans­for­ma­ção não só aumenta a fle­xi­bi­li­dade e adap­ta­bi­li­dade dos data frames para se ajustarem às ne­ces­si­da­des de várias análises e gráficos, como também otimiza a sua com­pa­ti­bi­li­dade com di­fe­ren­tes fer­ra­men­tas de análise R e bi­bli­o­te­cas de vi­su­a­li­za­ção.

Sintaxe de melt() em R

A função melt() no R pode ser ajustada através de vários ar­gu­men­tos para per­so­na­li­zar a sua fun­ci­o­na­li­dade.

melt(data.frame, na.rm = FALSE, value.name = "name", id = 'columns')
R
  • data.frame: é o quadro de dados ou data frame que se pretende re­es­tru­tu­rar.
  • na.rm: é um argumento opcional que tem um valor padrão de FALSE; ao alterá-lo para TRUE, elimina os valores des­co­nhe­ci­dos (NA) do conjunto de dados re­es­tru­tu­rado.
  • value.name: é um argumento opcional que permite definir o nome da coluna que conterá os valores das variáveis re­es­tru­tu­ra­das no novo conjunto de dados.
  • id: é um argumento opcional que es­pe­ci­fica quais colunas manter como iden­ti­fi­ca­do­res; o exemplo usa columns como um marcador de posição.

Um exemplo prático:

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

O data frame criado tem a seguinte aparência:

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

Agora, aplica-se a função melt() para converter o data frame num formato longo:

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

O data frame re­es­tru­tu­rado melted_df tem a seguinte aparência:

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

No resultado do exemplo, o data frame foi re­es­tru­tu­rado num formato longo. A coluna ID permanece como iden­ti­fi­ca­dor, a coluna Variable contém os nomes originais das colunas A e B, e a coluna Value mostra os valores as­so­ci­a­dos. Os valores des­co­nhe­ci­dos (NA) per­ma­ne­cem assim, devido ao argumento na.rm = FALSE.

Eliminar NA com melt() em R

Você pode eliminar os valores des­co­nhe­ci­dos (NA) do data frame de forma rápida e fácil usando o argumento na.rm=True:

Defina um novo 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

Tem a seguinte aparência:

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

Agora re­es­tru­ture o data frame com melt(), cer­ti­fi­cando-se de eliminar os valores des­co­nhe­ci­dos:

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

O novo data frame melted_df já está no formato longo e os valores des­co­nhe­ci­dos NA não aparecem:

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
Dica

Se quiser apro­fun­dar mais sobre como manipular strings ou cadeias de ca­rac­te­res em R, re­co­men­da­mos os tutoriais R substring() e R paste() do nosso guia.

Ir para o menu principal