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.

melt(data.frame, na.rm = FALSE, value.name = "name", id.vars = 'columns')
R
  • 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:

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

Der erstellte Data Frame sieht folgendermaßen aus:

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

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

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

Der umstrukturierte Data Frame melted_df zeigt:

   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

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:

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

Dieser hat die Form:

    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

Nun transformieren wir den Data Frame mit melt():

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

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

     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
Tipp

Wenn Sie sich mit der Manipulation von Strings in R beschäftigen möchten, empfehlen wir Ihnen die Tutorials zu R substring und R paste aus unserem Ratgeber.

Günstige Webhosting-Pakete von IONOS!

Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting inklusive persönlichem Berater mit IONOS!

Kostenlose Domain
SSL Zertifikat
DDoS-Schutz