Wie kann man Daten von ‘wide’ zu ‘long format’ in R umformen?

Um Daten von einem “wide” zu einem “long format” in R umzuformen, können Sie die Funktion melt() aus dem Paket reshape2 oder gather() aus dem Paket tidyverse (speziell tidyr) verwenden. Hier ist die Verwendung beider Methoden:

  1. reshape2 – Verwenden der melt() Funktion:
# Installieren und laden des reshape2 Pakets, falls noch nicht vorhanden
if (!require(reshape2)) {
  install.packages("reshape2")
  library(reshape2)
}

# Beispiel-Datenframe im "wide format"
daten_wide <- data.frame(
  subjekt = 1:3,
  var1_pre = c(3, 5, 6),
  var1_post = c(4, 7, 8),
  var2_pre = c(10, 15, 20),
  var2_post = c(12, 17, 22)
)

# Umformung von "wide" zu "long format"
daten_long <- melt(
  daten_wide, 
  id.vars = "subjekt", 
  variable.name = "time_measurement", 
  value.name = "score"
)
  1. tidyverse (tidyr) – Verwenden der gather() Funktion:
# Installieren und laden des tidyverse Pakets, falls noch nicht vorhanden
if (!require(tidyr)) {
  install.packages("tidyverse")
  library(tidyr)
}

# Beispiel-Datenframe im "wide format"
daten_wide <- data.frame(
  subjekt = 1:3,
  var1_pre = c(3, 5, 6),
  var1_post = c(4, 7, 8),
  var2_pre = c(10, 15, 20),
  var2_post = c(12, 17, 22)
)

# Umformung von "wide" zu "long format"
daten_long <- daten_wide %>%
  gather(
    key = "time_measurement", 
    value = "score", 
    -subjekt
  )

In beiden Fällen wird der resultierende Dataframe daten_long im “long format” sein. Die melt() oder gather() Funktionen kombinieren die Messvariablen in einer einzigen Spalte mit ihren entsprechenden Werten in einer separaten Spalte.