# 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.

```R
melt(data.frame, na.rm = FALSE, value.name = "name", id = 'columns')
```

- **`data.frame`**: é o quadro de dados ou data frame que se pretende reestruturar.
- **`na.rm`**: é um argumento opcional que tem um valor padrão de `FALSE`; ao alterá-lo para `TRUE`, 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 usa `columns` como um marcador de posição.

Um exemplo prático:

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

O data frame criado tem a seguinte aparência:

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

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

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

O data frame reestruturado `melted_df` tem a seguinte aparência:

```R
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
```

No 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:

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

Tem a seguinte aparência:

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

Agora reestruture o data frame com `melt()`, certificando-se de eliminar os valores desconhecidos:

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

O novo data frame `melted_df` já está no formato longo e os valores desconhecidos `NA` não aparecem:

```R
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
```

Dica Se quiser aprofundar mais sobre como manipular strings ou cadeias de caracteres em R, recomendamos os tutoriais [R substring()](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/r-substring/) e [R paste()](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/r-pasta/) do nosso guia.


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/derreter-em-r/](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/derreter-em-r/) for AI/LLM consumption.