# R melt(): Data Frames umstrukturieren

Das Umwandeln von Datenframes mit R `melt()` erleichtert die Anpassung an verschiedene Anforderungen. Viele Analysemethoden, etwa **lineare Modelle oder ANOVA**, bevorzugen Daten in einem länglichen Format, da dies oft natürlicher und interpretierbarer ist.

## Wozu dient R `melt()`?

R `melt()` ist eine Funktion aus dem `reshape2`-Paket zur **Umstrukturierung von Datenframes**, insbesondere beim Wechsel von einem breiten zu einem länglichen Format. Im breiten Format sind Variablen als separate Spalten organisiert, während das längliche Format eine verbesserte Darstellung für Analysen und Visualisierungen bietet.

R `melt()` ist ein essenzielles Tool für die Transformation von Daten. Die Anwendung von `melt()` ist besonders relevant, wenn Informationen in einem breiten Format vorliegen, aber für spezifische Analysen oder Grafiken ein längliches Format erforderlich ist. Dieser Prozess der Umstrukturierung erhöht die Flexibilität und Anpassungsfähigkeit von Datenframes, um eine optimale Nutzung verschiedener **R-Analysewerkzeuge** und Visualisierungsbibliotheken zu ermöglichen.

## Das ist die Syntax von R `melt()`

Die `melt()`-Funktion in R kann mithilfe verschiedener Argumente angepasst werden.

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

- `data.frame`: Dies ist der Datenframe, der umstrukturiert werden soll.
- `na.rm`: Ein optionales Argument, das den Standardwert `FALSE` besitzt; wenn auf `TRUE` gesetzt, werden fehlende Werte (`NA`) aus dem umstrukturierten Datensatz entfernt.
- `value.name`: Dieses optionale Argument ermöglicht es Ihnen, den Namen der Spalte festzulegen, die die Werte der umstrukturierten Variablen im neuen Datensatz enthält.
- `id.vars`: Ein optionales Argument, das angibt, welche Spalten als Identifikatoren beibehalten werden sollen; hier wird `columns` als Platzhalter verwendet.

Zur Veranschaulichung ein konkretes Beispiel:

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

Der erstellte Data Frame sieht folgendermaßen aus:

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

Nun wenden wir die `melt()`-Funktion an und wandeln den Data Frame in ein langes Format um:

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

Der umstrukturierte Data Frame `melted_df` zeigt:

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

In diesem Ergebnis haben wir die Daten im Data Frame in ein längliches Format umstrukturiert. Die Spalte `ID` wurde als Identifikator beibehalten, die Spalte `Variable` enthält die ursprünglichen Spaltennamen `A` und `B`, und die Spalte `Value` zeigt die entsprechenden Elemente. Aufgrund von `na.rm = FALSE` bleiben fehlende Werte (`NA`) übrig.

## `NA` mit R `melt()` entfernen

Sie können fehlende Werte in Data Frames schnell und einfach mit der Option `na.rm=True` entfernen.

Wir definieren einen neuen Datenrahmen:

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

Dieser hat die 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
```

Nun transformieren wir den Data Frame mit `melt()`:

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

Der neue Datenrahmen `melted_df` liegt jetzt in einer langen Form und ohne `NA`-Werte vor:

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

Tipp Wenn Sie sich mit der Manipulation von Strings in R beschäftigen möchten, empfehlen wir Ihnen die Tutorials zu [R substring](https://www.ionos.com/de-ch/digitalguide/websites/web-entwicklung/r-substring/) und [R paste](https://www.ionos.com/de-ch/digitalguide/websites/web-entwicklung/r-paste/) aus unserem Ratgeber.


This is a markdown version of: [https://www.ionos.com/de-ch/digitalguide/websites/web-entwicklung/r-melt/](https://www.ionos.com/de-ch/digitalguide/websites/web-entwicklung/r-melt/) for AI/LLM consumption.