4.4 Langes und weites Format von Daten

Daten können in unterschiedlichen Formaten vorliegen. Man unterscheidet beispielsweise zwischen einem langen und einem weiten Format. Das weite Format wird häufig verwendet, wenn Nutzer mit grafischen Benutzeroberflächen arbeiten, beispielsweise Excel oder SPSS. Stell dir zum Beispiel vor, du hast ein Experiment mit drei Personen (John, Florenz und Mary) durchgeführt und den Probanden zwei Medikamente hintereinander gegeben. Die Variablennamen kennzeichnen jedes Medikament und die Werte bestimmte Blutwerte.

## # A tibble: 3 x 3
##   name    pill_a pill_b
##   <chr>    <dbl>  <dbl>
## 1 John        NA      2
## 2 Florenz     16     11
## 3 Mary         3      1

Dieser Datensatz kann allerdings auch ganz anders gestaltet sein:

## # A tibble: 2 x 4
##   name    john florenz  mary
##   <chr>  <dbl>   <dbl> <dbl>
## 1 pill_a    NA      16     3
## 2 pill_b     2      11     1

In diesem Fall stehen die Variablen für die Probanden und die Reihen für die Medikamente. Einen solchen Datensatz sollten wir allerdings nicht kreiieren, da Variablen auch Variablen sein sollten. Der Name eines Probanden ist keine Variable, sondern die Ausprägung einer Variable. Ebenso sind in unserem vorherigen Beispiel die Variablen pill_a und pill_b keine Variablen, sondern die Ausprägung einer Variable pill:

## # A tibble: 3 x 3
##   name    pill_a pill_b
##   <chr>    <dbl>  <dbl>
## 1 John        NA      2
## 2 Florenz     16     11
## 3 Mary         3      1

Ein solches Format nennen wir weites Format, da dieses die Ausprägungen einer Variable in die weite zieht. Ein solches Format findest du häufig, wenn du mit SPSS oder Excel arbeitest. Wir müssen allerdings in der Lage sein, die Datensätze manchmal zu transformieren und sie in eine sogenanntes langes Format zu bringen:

## # A tibble: 6 x 3
##   name    pill  value
##   <chr>   <chr> <dbl>
## 1 John    a        NA
## 2 John    b         2
## 3 Florenz a        16
## 4 Florenz b        11
## 5 Mary    a         3
## 6 Mary    b         1

Für diese Aufgabe können wir die Funktionen pivot_longer und pivot_wider verwenden.

4.4.1 pivot_longer - Daten in eine langes Format überführen

Betrachten wir erneut unseren Datensatz, welcher in einem weiten Format vorliegt:

## # A tibble: 3 x 3
##   name    pill_a pill_b
##   <chr>    <dbl>  <dbl>
## 1 John        NA      2
## 2 Florenz     16     11
## 3 Mary         3      1

Um diese Daten nun in ein langes Format zu überführen, müssen wir wissen, welche Variablen weit vorliegen. In unserem Fall sind dies die Variablen pill_a und pill_b. Wir nennen diese Variablen cols für Columns. Gleichzeitig sollten wir wissen, wie die neuen Variablen heißen, die den Namen der Medikamentenvariable und den Namen der Werte der Ausprägungen dieser Variablen enthält. Wir nennen diese Variablen pill und value. Nun können wir die Daten in ein langes Format überführen:

## # A tibble: 6 x 3
##   name    pill   value
##   <chr>   <chr>  <dbl>
## 1 John    pill_a    NA
## 2 John    pill_b     2
## 3 Florenz pill_a    16
## 4 Florenz pill_b    11
## 5 Mary    pill_a     3
## 6 Mary    pill_b     1

Fast perfekt. Mit cols haben wir angegeben, welche Variablen in einem weiten Format vorliegen, mit names_to bestimmen wir den Namen der neuen Variable, die diese Ausprägungen umfasst und mit values_to bestimmen wir den Namen der Variable, die die Werte dieser Ausprägungen enthält. Wir haben allerdings noch ein Problem, die Ausprägungen der Variable pill umfassen den Präfix pill_. Diesen können wir mit dem Argument names_prefix entfernen:

## # A tibble: 6 x 3
##   name    pill  value
##   <chr>   <chr> <dbl>
## 1 John    a        NA
## 2 John    b         2
## 3 Florenz a        16
## 4 Florenz b        11
## 5 Mary    a         3
## 6 Mary    b         1

Dieses lange Format wird häufig in R gebraucht, beispielsweise, wenn wir eine Visualisierung dieser Daten erstellen möchten. Manchmal gibt es allerdings den umgehkehrten Fall, dass wir Daten von einem langen Format in ein weites Format umwandeln möchten. Hierfür verwenden wir die Funktion pivot_wider:

## # A tibble: 3 x 3
##   name    pill_a pill_b
##   <chr>    <dbl>  <dbl>
## 1 John        NA      2
## 2 Florenz     16     11
## 3 Mary         3      1

Diesmal bestimmen wir mit names_from welche Variable in ein weites Format überführt werden soll und mit values_from, welche Werte diese Ausprägungen umfassen. Mit Hilfe von names_prefix fügen wir einen Präfix an. Wir hätten ebenso den Präfix ändern können:

## # A tibble: 3 x 3
##   name    medikament_a medikament_b
##   <chr>          <dbl>        <dbl>
## 1 John              NA            2
## 2 Florenz           16           11
## 3 Mary               3            1

Ein solcher Datensatz ist nicht sauber und kann für die Visualisierung in ggplot2 nicht verwendet werden. Der Datensatz ist nicht sauber, da jede Zeile mehr als eine Beobachtung umfasst (z.B. mehrere Pillenapplikationen).

pivot_longer und pivot_wider sind mächtige Tools, die ebenso eine Lernkurve haben. Wir werden diese Funktionen in diesem Kurs vereinzelt verwenden. An dieser Stelle genügt es, wenn du das Beispiel selber umsetzen konntest. Weitere Informationen zu diesen Funktionen findest du hier.