Datenmanipulation mit dplyr – RStudio Package

0
1110
dplyr
Praktikum

JedeR, der/die schon einmal Daten auswerten musste, kennt es: Vom Output bis zum auswertbaren File ist es ein teilweise langer und beschwerlicher Weg. Für RStudio gibt es aber ein paar tolle Packages/Pakete, die euch das Leben um einiges leichter machen. Hierzu gehören die Pakete dplyr und tidyr von Hadley Wickham. Vor allem wer mit großen Datenmengen arbeitet, wird hier eines seiner Lieblingspakete finden.

Für unsere Beispiele verwenden wir die airquality-Daten aus dem datasets-Paket. Der Datensatz behinhaltet Informationen über die Luftqualität in New York von Mai 1973 bis September 1973.

Wenn wir uns den Datensatz einmal ansehen, sieht dieser folgendermaßen aus:

[box style=““]

head(airquality)

  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6

[/box]

Installation von dplyr

Bevor wir starten können, müssen wir natürlich die beiden Pakete installieren und laden:

[box style=““]

install.packages("dplyr")
install.packages("datasets")
library(datasets) 
library(dplyr)

[/box]

Jetzt können wir loslegen!

Filter-Funktion

Die Filter-Funktion sucht alle Zeilen heraus, die den Kriterien entsprechen, die ihr festlegt. Wir wollen hier alle Zeilen, bei denen die Temperatur über 70 Fahrenheit liegt:

[box style=““]

filter(airquality, Temp > 70)

  Ozone Solar.R Wind Temp Month Day
1    36     118  8.0   72     5   2
2    12     149 12.6   74     5   3
3     7      NA  6.9   74     5  11
4    11     320 16.6   73     5  22
5    45     252 14.9   81     5  29
6   115     223  5.7   79     5  30
...

[/box]

Natürlich können wir auch mehrere Bedingungen formulieren. Jetzt wollen wir alle Zeilen, bei denen die Temperatur ab Juni über 80 Fahrenheit liegt (also „Monat“ größer als 5). Beide Bedingungen werden durch ein &-Zeichen verknüpft, d. h. nur wenn beide zutreffen, wird die Zeile ausgesucht. Weitere Logik-Zeichen könnt ihr in Abb. 1. finden.

logik zeichen
Abb. 1. Alle Logik-Zeichen in R
[box style=""]
filter(airquality, Temp > 80 & Month > 5)

   Ozone Solar.R Wind Temp Month Day
1     NA     186  9.2   84     6   4
2     NA     220  8.6   85     6   5
3     29     127  9.7   82     6   7
4     NA     273  6.9   87     6   8
5     71     291 13.8   90     6   9
6     39     323 11.5   87     6  10
...
[/box]

Mutate-Funktion

Mit der Mutate-Funktion können wir weitere Variablen hinzufügen. Wir fügen nun im Folgenden neben der Temperatur in Fahrenheit auch die Temperatur in Celsius ein.

[box]
mutate(airquality, TempInC = (Temp - 32) * 5 / 9)

  Ozone Solar.R Wind Temp Month Day  TempInC
1    41     190  7.4   67     5   1 19.44444
2    36     118  8.0   72     5   2 22.22222
3    12     149 12.6   74     5   3 23.33333
4    18     313 11.5   62     5   4 16.66667
5    NA      NA 14.3   56     5   5 13.33333
...
[/box]

Summarise-Funktion

Mithilfe der Summarise-Funktion können wir alle Daten in einer zusammenfassen. Nutzen wir diese mit den anderen Funktionen aus dem dplyr-Paket, ist diese sehr leistungsfähig. In unserem Beispiel wollen wir den Mittelwert aller Temperaturen ohne die fehlenden Werte. Hierzu sagen wir einfach, dass alle NAs ausgelassen werden sollten:  na.rm = TRUE

[box]

summarise(airquality, mean(Temp, na.rm = TRUE))

  mean(Temp)
1   77.88235

[/box]

„Group By“-Funktion

Mit der Group-by-Funktion könnt ihr des Weiteren z. B. die Mittelwerte pro Monat ausrechnen lassen. Hierzu müsst ihr nur angeben, aus welchem Datensatz ihr eure Werte beziehen wollt und nach welchen Kriterium Gruppen gebildet werden sollen, allgemein bedeutet das: groupe_by(Datensatz, Variable_nach_der_sortiert_werden_soll)

[box]

summarise(group_by(airquality, Month), mean(Temp, na.rm = TRUE))

  Month mean(Temp)
1     5   65.54839
2     6   79.10000
3     7   83.90323
4     8   83.96774
5     9   76.90000
[/box]

Sample-Funktion

Mit der Sample-Funktion könnt ihr eine bestimmte Anzahl an Zeilen zufällig aus der Tabelle auswählen. Mit dem ersten Code wählt ihr genau zehn Zeilen aus. Mit dem zweiten Code wählt ihr 10% der Zeilen aus dem Datensatz aus, was bedeutet, dass wir 15 Zeilen erhalten (10% von 153 Zeilen sind 15 Zeilen).

[box]

sample_n(airquality, size = 10)
sample_frac(airquality, size = 0.1)
[/box]

Count-Funktion

Die Count-Funktion ist ähnlich wie im Basispaket eine ganz normale Zählfunktion. Sie listet tabellarisch auf, wie viele Kriterien auf die ausgewählte Variable zutreffen.

[box]

count(airquality, Month)

  Month  n
1     5 31
2     6 30
3     7 31
4     8 31
5     9 30
[/box]

Wir haben somit 31 Zeilen mit dem Monat 5, 30 Zeilen mit dem Monat 6, usw.

Arrange-Funktion

Die Arrange-Funktion bietet auch tolle Möglichkeiten. Mit ihr lassen sich Daten ganz einfach ordnen. Dabei wird immer von der kleinsten zur größten Zahl oder von A bis Z sortiert. Enthält die Spalte Buchstaben und Nummern, wird erst nach Buchstabe und dann nach Zahl sortiert, z. B. A1, A2, B2, usw. Umklammern wir die Variable allerdings mit der Bedingung „desc()“, wird es genau andersherum gemacht. In unserem Beispiel wird somit vom Monat 9 bis 1 sortiert, der Tag aber von 1 bis 6.

[box]

arrange(airquality, desc(Month), Day)

  Ozone Solar.R Wind Temp Month Day
1    96     167  6.9   91     9   1
2    78     197  5.1   92     9   2
3    73     183  2.8   93     9   3
4    91     189  4.6   93     9   4
5    47      95  7.4   87     9   5
6    32      92 15.5   84     9   6

[/box]

Wer alle Funktionen auf einen Blick haben will, kann sich einfach das folgende Cheat-Sheet anschauen, auch als .pdf downloadbar:

[lightbox_image src=“http://www.psystudents.org/wp-content/uploads/2015/12/dpylr-Seite-1.jpg“ bigimage=“http://www.psystudents.org/wp-content/uploads/2015/12/dpylr-Seite-1.jpg“ title=“Chat Sheet dplyr und tidyr Seite 1″]

[lightbox_image src=“http://www.psystudents.org/wp-content/uploads/2015/12/dpylr-Seite-2.jpg“ bigimage=“http://www.psystudents.org/wp-content/uploads/2015/12/dpylr-Seite-2.jpg“ title=“Chat Sheet dplyr und tidyr Seite 2″]

 

Quellen

DatenSciencePlus
Cheat-Sheets auf www.rstudio.com