melt() em R: reestruturar data frames
A função melt() no R reestrutura os data frames para adaptá-los a diferentes necessidades. Muitos métodos de análise, como os modelos lineares ou ANOVA, preferem dados em formato longo, pois são mais naturais e interpretáveis.
Para que serve o melt() em R?
A função melt() no R, que faz parte do pacote reshape2, é fundamental para reestruturar data frames, especialmente quando se faz a transição de um formato largo para um longo. No formato largo, as variáveis são organizadas como colunas separadas, enquanto o formato longo oferece uma apresentação melhorada para análise e visualização. Esta transformação não só aumenta a flexibilidade e adaptabilidade dos data frames para se ajustarem às necessidades de várias análises e gráficos, como também otimiza a sua compatibilidade com diferentes ferramentas de análise R e bibliotecas de visualização.
Sintaxe de melt() em R
A função melt() no R pode ser ajustada através de vários argumentos para personalizar a sua funcionalidade.
melt(data.frame, na.rm = FALSE, value.name = "name", id = 'columns')Rdata.frame: é o quadro de dados ou data frame que se pretende reestruturar.na.rm: é um argumento opcional que tem um valor padrão deFALSE; ao alterá-lo paraTRUE, elimina os valores desconhecidos (NA) do conjunto de dados reestruturado.value.name: é um argumento opcional que permite definir o nome da coluna que conterá os valores das variáveis reestruturadas no novo conjunto de dados.id: é um argumento opcional que especifica quais colunas manter como identificadores; o exemplo usacolumnscomo 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))RO data frame criado tem a seguinte aparência:
ID A B
1 1 4 8
2 2 7 NA
3 3 NA 5RAgora, 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")RO data frame reestruturado 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 5RNo resultado do exemplo, o data frame foi reestruturado num formato longo. A coluna ID permanece como identificador, a coluna Variable contém os nomes originais das colunas A e B, e a coluna Value mostra os valores associados. Os valores desconhecidos (NA) permanecem assim, devido ao argumento na.rm = FALSE.
Eliminar NA com melt() em R
Você pode eliminar os valores desconhecidos (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))RTem 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 1RAgora reestruture o data frame com melt(), certificando-se de eliminar os valores desconhecidos:
melted_df <- melt(df, na.rm = TRUE, value.name = "Value", id = "ID")RO novo data frame melted_df já está no formato longo e os valores desconhecidos 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 1RSe quiser aprofundar mais sobre como manipular strings ou cadeias de caracteres em R, recomendamos os tutoriais R substring() e R paste() do nosso guia.