# Sådan omstruktureres datarammer med R's melt-funktion

Konvertering af datarammer med funktionen `melt()` i R gør det lettere at tilpasse sig forskellige krav. Mange analysemetoder, såsom **lineære modeller og ANOVA**, foretrækker data i et langt format, fordi det er mere naturligt og lettere at fortolke.

## Hvad bruges R’s melt()-funktion til?

R’s `melt()` tilhører `reshape2` og bruges til **at omstrukturere datarammer**, især til at konvertere dem fra et bredt format til et langt format. I et bredt format er variablerne organiseret i separate kolonner, mens et langt format giver en bedre visning til analyser og visualiseringer.

Funktionen `melt()` i R er et vigtigt værktøj til at omdanne data. Den er især relevant, når information kun er tilgængelig i et bredt format, men visse analyser eller grafikker kræver et langt format. Denne mulighed for at omstrukturere data øger fleksibiliteten i datarammer og giver mulighed for optimal brug af forskellige **R-analyseværktøjer** og visualiseringsbiblioteker.

## Hvad er syntaksen for R’s melt()-funktion?

Funktionen `melt()` i R kan tilpasses ved hjælp af forskellige argumenter.

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

- **`data.frame`**: Dette henviser til den dataramme, du ønsker at omstrukturere
- **`na.rm`**: Et valgfrit argument, der har en standardværdi på `FALSE`
- **`value.name`**: Dette valgfri argument giver dig mulighed for at navngive den kolonne, der indeholder værdierne for de omstrukturerede variabler i det nye datasæt
- **`id.vars`**: Et valgfrit argument, der angiver, hvilke kolonner der skal bevares som identifikatorer. `columns` bruges som pladsholder.

Lad os se på et eksempel:

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

Den resulterende dataramme ser således ud:

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

Nu bruger vi `melt()` og omdanner datarammen til et langt format:

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

Den omstrukturerede dataramme `melted_df` ser således ud:

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

Resultatet er en dataramme, der er omstruktureret til et langt format. Kolonne `ID` er bevaret som identifikator, kolonne `variable` indeholder det, der tidligere var kolonnenavne (`A` og `B`), og kolonne `Value` indeholder de tilsvarende elementer. På grund`na.rm = FALSE` er der nogle manglende værdier (markeret med `NA`).

## Sådan fjerner du NA-poster med R’s melt()

Du kan nemt fjerne manglende værdier i datarammer med indstillingen `na.rm=True`.

Lad os definere en ny dataramme:

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

Dataframen har følgende form:

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

Nu omstrukturerer vi datarammen ved hjælp af `melt()`:

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

Den nye dataramme `melted_df` findes nu i et langt format uden `NA` værdier:

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

Tip Hvis du vil lære mere om, hvordan du manipulerer strenge i R, kan du se vejledningerne til [R substring()](https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/r-delstreng/) og [R paste()](https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/r-pasta/) i vores digitale guide.


This is a markdown version of: [https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/r-smelte/](https://www.ionos.com/da-dk/digitalguide/websteder/webudvikling/r-smelte/) for AI/LLM consumption.