Dritter „Skill Track“ abgeschlossen: Datenaufbereitung mit R (Data Manipulation with R). Er umfasst vier Kurse. Zwei fehlten mir zuletzt noch: Exploratory Data Analysis in R: Case Study (Explorative Datenanalyse: Fallbeispiel) sowie Joining Data in R with dplyr. Darin ging es ausführlich um verschiedene Möglichkeiten, Daten zusammenzuführen bzw. anhand anderer Daten zu filtern.
Wer schon seit längerem R nutzt oder Lösungen für bestimmte Probleme googelt, verwendet evtl. Funktionen der Basis-Installation oder ältere R-Pakete wie Hadley Wickham’s plyr. Meines Erachtens lohnt sich der Aufwand, sich mit neueren Paketen wie dplyr vertraut zu machen. (Ähnliches gilt für reshape -> reshape2 -> tidyr. Ich empfehle das letztgenannte, neueste Paket, mit dem man z. B. sehr einfach Daten für ggplot2 aufbereiten kann.)
Stärken von dplyr
dplyr verwendet piping, wie es vom magrittr-Paket eingeführt wurde. Dadurch kann im Gegensatz zu manchen Skripten in base-R sehr übersichtlicher Code geschrieben werden, etwa so:
nAwards %>% # Filter to just the players in nominated semi_join(nominated, by = "playerID") %>% # Filter to players NOT in inducted anti_join(inducted, by = "playerID") %>% # Calculate the mean number of awards per player summarize(avg_n = mean(n, na.rm = TRUE))
Auf diese Weise kann man elegant verzichten: einerseits auf geschachtelte Klammer-Ausdrücke, andererseits auf das Zwischenspeichern in temporären Vektoren. Das Ergebnis jedes Schritts wird mit dem pipe operator %>% einfach an die nächste Operation weitergegeben, ohne die Arbeitsumgebung mit Zwischenergebnissen vollzustopfen. Kommentiert man die einzelnen Schritte noch, dann haben auch andere gute Chancen, den Code zu verstehen.
dplyr-Funktionen können sowohl auf Daten im Arbeitsspeicher als auch auf Datenbankverbindungen angewendet werden. So kann man bei R-Code bleiben und muss nicht R-Code mit SQL-Abfragen mischen. dplyr „übersetzt“ die R-Befehle bei Bedarf im Hintergrund in SQL.
Zudem ist dplyr deutlich schneller als plyr.