Dplyr ist eines der wichtigsten Packages für R. Das Package wurde von Hadley Wickham entwickelt, der auch ggplot2, tidyr, lubridate und viele weitere geschaffen hat. Dplyr enthält eine lange Reihe von Funktionen, die praktisch jede Form der Datenaufbereitung erleichtern.
Funktionen in base R (der Grundinstallation von R) können vieles von dem leisten, was dplyr bietet. In base R gibt es Funktionen wie split(), subset(), sapply(), lapply(), tapply() und aggregate(), doch diese Funktionen sind schwer zu handhaben und lassen sich auch nicht auf natürliche Weise mit anderen Funktionen aus dem tidyverse kombinieren. Mit dplyr lässt sich leicht arbeiten, und es kann darüber hinaus mit Funktionen aus Hunderten anderer wichtiger R-Packages kombiniert werden. Tatsächlich werden immer mehr Packages so entwickelt und angepasst, dass sie zusammen mit dplyr verwendet werden können. Dplyr ist Teil des tidyverse, das viele weitere wichtige Packages enthält (zum Beispiel ggplot2).
Die Funktionen in dplyr sind nicht nur einfacher zu verwenden als base R, sie sind auch effizienter (sie verbrauchen weniger Arbeitsspeicher und sind in der Regel schneller).
Alle Funktionen in dplyr sind für die Anwendung auf Data Frames konzipiert (siehe frühere Diskussion). Ein Data Frame ist eine rechteckige Tabelle mit Zeilen und Spalten. In fast allen Fällen bilden die Zeilen die Beobachtungen und die Spalten die Variablen (Messwerte, die die Beobachtungen beschreiben).
In diesem Kapitel werden sämtliche Funktionen in dplyr demonstriert. Zu diesen Funktionen gehören beispielsweise:
filter()- Variablen/Fälle anhand ihres Wertes auswählenmutate()- fügt eine neue Variable hinzu, die eine Funktion bestehender Variablen istselect()- Variablen anhand ihres Namens auswählenarrange()- die Reihenfolge der Zeilen im Data Frame ändernrename()- Variablen umbenennenslice()- wählt Variablen anhand ihrer Position aussummarise()- fasst mehrere Variablen zu einer zusammengefassten Variable zusammengroup_by()- führt Ihre Funktionen für eine bestimmte Gruppe von Individuen in Ihrer Datendatei ausacross()- eine oder mehrere Funktionen auf eine bestimmte Gruppe von Variablen anwendenif_else()- erstellt eine neue Variable auf Grundlage verschiedener Bedingungen, die erfüllt sein könnenrow_number()- Zeilennummern verwenden, um eine Spalte mit Informationen zur Zeilennummer hinzuzufügenrowwise()- führt Ihre Funktionen für eine Gruppe von Zeilen (Beobachtungen) ausdistinct()- Zeilen mit eindeutigen Werten für eine oder mehrere Variablen in Ihrer Datendatei auswählen
dplyr installieren
Dplyr ist Teil des umfassenderen Frameworks tidyverse und kann daher mit folgendem Befehl installiert werden:
install.packages("tidyverse", dependencies = T)Das Laden von tidyverse führt dazu, dass folgende Packages geladen werden: dplyr, ggplot2, forcats, tibble, tidyr, stringr, purr, readr:
library(tidyverse)── Attaching packages ─────────────────────────────────────────────── tidyverse 1.3.2 ──
✔ ggplot2 3.4.0 ✔ purrr 0.3.4
✔ tibble 3.1.8 ✔ dplyr 1.0.10
✔ tidyr 1.2.0 ✔ stringr 1.4.1
✔ readr 2.1.2 ✔ forcats 0.5.1
── Conflicts ────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()Wie aus der obigen Ausgabe hervorgeht, sind die Packages nun geladen. Im Package ggplot2 befinden sich die Daten mpg, die wir nun mit folgendem Befehl laden:
## mpg-Daten laden
data(mpg)
## Erste 5 Zeilen anzeigen
head(mpg)## A tibble: 6 × 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compactGruppierte Funktionen mit group_by()
Mit der Funktion group_by() können Sie dplyr dazu bringen, jede Funktion getrennt in verschiedenen Gruppen Ihres Data Frames auszuführen. Wir werden group_by() in vielen Beispielen verwenden, um dies zu demonstrieren.
Der Pipe-Operator (Pipe): |>
Die Stärke von dplyr liegt in der Möglichkeit, Operationen (Arbeitsschritte) zu verketten. In dplyr können wir Operationen mithilfe der Pipe, die durch das Zeichen |> dargestellt wird, nacheinander ausführen. Früher wurde %>% als Pipe-Operator verwendet, doch seit 2021 wurde dies auf |> umgestellt. Das Tastenkürzel für die Pipe ist **Cmd+Shift+M** auf dem Mac und Ctrl + Shift + M unter Windows und Linux.
Die Pipe ist magisch! Die Pipe nimmt nämlich das Ergebnis jeder Operation und übergibt es als erstes Argument an die nächste Operation. Es folgt ein Beispiel dafür, mit Erläuterungen darunter:
mpg |>
select(displ, cty, cyl) |>
mutate(ny_variabel = displ*cyl)- In Zeile 1 beginnen wir mit den Daten
mpg, die wir mit|>an Zeile 2 weitergeben. - In Zeile 2 entscheiden wir uns, drei Spalten zu behalten:
displ,ctyundcyl. Das Ergebnis ist ein neuer Data Frame, der nur diese drei Variablen enthält. Dieser Data Frame wird als erstes Argument an Zeile 3 weitergegeben. - In Zeile 3 wird
mutate()verwendet, um die Variableny_variabelzu erstellen, die das Produkt ausdisplundcylist.
Somit wird die Pipe (|>) verwendet, um Operationen mit dplyr zu verketten.