Ein erheblicher Teil jeder Analyse und Forschungsarbeit entfällt auf die Datenaufbereitung. Nur selten lassen sich Daten unmittelbar nach dem Import in R oder Python beschreiben, visualisieren und analysieren. Die Aufbereitung von Daten erfordert Zeit und Mühe. Im vorigen Kapitel wurde das Package dplyr besprochen, das Funktionen zur Bearbeitung des Inhalts eines Data Frames enthält. In diesem Kapitel geht es um das Package tidyr, mit dem ein Data Frame strukturiert wird. Ziel ist es, Tidy Data zu erzeugen, was in den allermeisten Fällen bedeutet, dass die Zeilen Beobachtungen enthalten (zum Beispiel Patienten) und die Spalten Informationen über die Beobachtungen (zum Beispiel Geschlecht, Alter, Einkommen usw.). Die überwiegende Mehrheit aller Analysen setzt voraus, dass die Daten im Tidy-Format vorliegen.
Der große Vorteil, einen Data Frame so zu strukturieren, dass die Spalten Variablen sind, besteht darin, dass sich dadurch vektorisierte Funktionen verwenden lassen. Eine vektorisierte Funktion verwendet jeden Vektor als Input für ihre Berechnungen. Falls es Ihnen schwerfällt zu verstehen, was eine vektorisierte Funktion ist, genügt die Feststellung, dass nahezu alle Funktionen in R vektorisiert sind. In einem Data Frame können Sie eine Spalte (Variable) als Vektor betrachten.
Beispiel für Daten im Tidy-Format
Im folgenden Beispiel liegen die Daten im Tidy-Format vor, da jede Zeile eine Beobachtung (Person) und jede Spalte eine Variable ist, die die Person beschreibt.
| Name | Alter | Einkommen | Bildung | Cholesterin |
|---|---|---|---|---|
| Adam | 45 | 324211 | Hochschule | 4.5 |
| Zara | 51 | 198765 | Grundschule | 7.6 |
Tidy Data
Beispiel für Daten, die nicht im Tidy-Format vorliegen
Im folgenden Beispiel liegen die Daten nicht im Tidy-Format vor, da die Variablen und ihre zugehörigen Werte in nur zwei Spalten (Variable und Wert) angegeben werden.
| Name | Variable | Wert |
|---|---|---|
| Adam | Alter | 45 |
| Adam | Einkommen | 324211 |
| Adam | Bildung | Hochschule |
| Zara | Alter | 51 |
| Zara | Einkommen | 198765 |
| Zara | Bildung | Grundschule |
Daten im „Long Format“, also keine „Tidy Data“.
Es ist nicht zwangsläufig falsch, wenn Daten im Long Format vorliegen. Manchmal müssen Daten im Long Format vorliegen, um visualisiert oder analysiert werden zu können.
Beispiel für Tidy Data mit wiederholten Messungen
Im folgenden Beispiel liegen die Daten ebenfalls im Tidy-Format vor, da jede Zeile eine Beobachtung (Person) und jede Spalte eine Variable ist, die die Person beschreibt, auch wenn dieselbe Person in mehreren Zeilen vorkommt. Es handelt sich um ein Beispiel mit wiederholten Messungen an derselben Person.
| Name | Alter | Einkommen | Bildung | Cholesterin |
|---|---|---|---|---|
| Adam | 45 | 324211 | Hochschule | 4.5 |
| Adam | 46 | 384211 | Hochschule | 7.6 |
| Adam | 47 | 412321 | Hochschule | 5.1 |
| Adam | 48 | 48921 | Hochschule | 3.9 |
Tidy Data mit wiederholten Messungen.
In tidyr gibt es Funktionen, die Daten umordnen, sodass sie in verschiedene Formate transformiert werden können.
Beispiele für Funktionen in tidyr sind:
pivot_longer()- transformiert Daten in das lange Format (Long Format).pivot_wider()- transformiert Daten in das breite Format (Wide Format).gather()- transformiert Daten in das lange Format. Wurde durchpivot_longer()ersetzt.spread()- transformiert Daten in das breite Format. Wurde durchpivot_wider()ersetzt.unite()- Fügt Spalten zusammen.separate()- Teilt den Inhalt einer Spalte auf mehrere Spalten auf.nest(),unnest(),unnest_longer()- Verschachtelt Daten (nest) und löst die Verschachtelung auf (unnest).expand(),complete()- Erweitert Daten.