4.3 Dataframes zusammen führen

Dieser Teil ist ein wenig schwierig. Solltest du an dieser Stelle die Inhalte noch nicht verstehen, kein Problem. Du wirst noch ein paar Wochen Zeit haben, bis du diese Befehle anwenden musst. Wenn du an dieser Stelle die zu Grunde liegende Idee verstehst, hast du schon einen großen Schritt gemacht.

Mehrere Datenblätter zusammen zu führen ist häufig eine äußerst schwierige Aufgabe, die schnell zu Fehlern führen kann, wenn es händisch gemacht macht, z.B. mit Excel. Stell dir zum Beispiel vor, du hast zwei CSV-Dateien, die unterschiedliche Variablen der Probanden umfassen. Die einzige Variable, die die beiden Datenblätter teilen, ist die ID der Probanden. Um solche Aufgaben durchzuführen, eignet sich die Funktion left_join.

Stell dir vor, du hast einen Test mit Probanden durchgeführt und dir liegen nun zwei Datenblätter vor. In einem Datenblatt stecken die demografischen Daten der Probanden, im anderen Datenblatt die Punkte des Tests:

## # A tibble: 4 x 3
##      id alter geschlecht
##   <dbl> <dbl> <chr>     
## 1     1    21 weiblich  
## 2     2    22 weiblich  
## 3     3    24 männlich  
## 4     5    22 männlich

Und:

## # A tibble: 4 x 3
##      id vorwissen post_test
##   <dbl>     <dbl>     <dbl>
## 1     1        13        14
## 2     2         8        12
## 3     3        15        17
## 4     4        13        15

Wie schaffst du es nun, beide Datenblätter zusammen zu führen. Hierfür benötigst du zunächst eine Variable, die sich beide Datenblätter teilen. Glücklicherweise umfassen beide Datenblätter die Variable, id, welche eine Zuordnung ermöglicht. Wenn du genau hinschaust, siehst du, dass dass der Datensatz punkte eine andere Person enthält als der Datensatz demografische_daten. Du hast daher verschiedene Möglichkeiten die Daten zusammen zu führen. Entweder möchtest du nur die Probanden des Datensatzes demografische_daten behalten oder du möchtest alle Probanden des Datensatz punkte behalten oder du möchtest alle Datensätze behalten? Genau für diese Aufgaben haben wir die Funktionen left_join, right_join und full_join. Beginnen wir mit left_join:

Die Funktion left_join hat drei Argumente:

Mit left_join sagen wir, dass wir nur die Probanden des linken Datensatzes behalten möchten. Alle Probanden im rechten Datensatz, die nicht im linken Datensatz sind, werden verworfen. Mit Hilfe von by = "id" geben wir an, welche Variable sich beide Datensätze teilen:

## # A tibble: 4 x 5
##      id alter geschlecht vorwissen post_test
##   <dbl> <dbl> <chr>          <dbl>     <dbl>
## 1     1    21 weiblich          13        14
## 2     2    22 weiblich           8        12
## 3     3    24 männlich          15        17
## 4     5    22 männlich          NA        NA

Du siehst, dass wir für Proband 5 keine Werte bei der Variable vorwissen und post_test haben. Dies liegt darin, dass diese Variablen im Datensatz punkte nicht existieren. Ganz ähnlich funktioniert die Funktion right_join, nur dass wir bei dieser Funktion nur die Werte im rechten Datensatz behalten:

## # A tibble: 4 x 5
##      id alter geschlecht vorwissen post_test
##   <dbl> <dbl> <chr>          <dbl>     <dbl>
## 1     1    21 weiblich          13        14
## 2     2    22 weiblich           8        12
## 3     3    24 männlich          15        17
## 4     4    NA <NA>              13        15

In diesem Fall fehlen uns Werte für die Person 4, welche nicht im Datensatz demografische_daten vorzufinden ist. Wir hätten ebenso die Namen der Variablen umdrehen und left_join verwenden können:

## # A tibble: 4 x 5
##      id vorwissen post_test alter geschlecht
##   <dbl>     <dbl>     <dbl> <dbl> <chr>     
## 1     1        13        14    21 weiblich  
## 2     2         8        12    22 weiblich  
## 3     3        15        17    24 männlich  
## 4     4        13        15    NA <NA>

Der einzige Unterschied ist die Reihenfolge der Variablen. Möchten wir alle Probanden behalten, verwenden wir full_join:

## # A tibble: 5 x 5
##      id alter geschlecht vorwissen post_test
##   <dbl> <dbl> <chr>          <dbl>     <dbl>
## 1     1    21 weiblich          13        14
## 2     2    22 weiblich           8        12
## 3     3    24 männlich          15        17
## 4     5    22 männlich          NA        NA
## 5     4    NA <NA>              13        15

Nun siehst du die Probanden 1 bis 5. Wir haben sowohl die Werte des Datensatzes demografische_daten als auch des Datensatzes punkte behalten. Eine ausführliche Beschreibung dieser Funktionen findest du auf dieser Seite.