Einleitung

Diese Kurzeinführung zu R und in die Datenanaylse mit dem tidyverse package wurde als Begleitmaterial für das Lehrforschungsprojekt “Supervised Machine Learning: Zwischenrufe im Bundestag” an der Universität Potsdam im Sommersemester 2022 erstellt.

Inhalt

Kapitel 1 & 2 führen in die Grundlagen von R und RStudio ein. R ist eine Programmiersprache die vor allem für statistische Analysen Anwendung findet. Die Grundfunktionen von R können durch das Einbinden von professionellen und nutzergeschriebenen packages erweitert werden. Diese Erweiterungen sind es, die R so flexibel machen und neben statistischen Analysen unter anderem auch das Schreiben von Websites direkt in R – so wie diese Website – und die Aufbereitung und Analyse von Textdaten ermöglichen. RStudio ist ein IDE – integrated development environment – für R und vereinfacht das Arbeiten mit der Sprache. Die ersten beiden Kapitel umfassen Informationen zur Installation beider Softwares, der Bedienung von RStudio sowie grundlegender R Befehlen.

Während Kapitel 2 bereits die grundlegenden Prinzipien des tidyverse – einer populären Sammlung von R packages – erläutert, befassen sich Kapitel 3 & 4 mit den zwei Bestandteilen der Sammlung die wir in der Datenanalyse am häufigsten verwenden werden. dplyr wird genutzt um Daten zu bereinigen, zu transformieren, neue Daten aus bestehenden zu erzeugen und zusammenfassende Statistiken zu berechnen. gplot2 gibt uns einen umfassenden Werzeugkasten zur graphischen Analyse an die Hand. Wir betrachten dessen grundlegende Syntax, einige häufig genutzte Diagrammtypen sowie Optionen die erstellten Plots ansprechend und aussagekräftig zu gestalten.

Konventionen

Die R Welt ist eine englischssprachige Welt. Die Namen von packages und Funktionen sind meist mehr oder weniger sprechend und stets Englisch. Auch sind die meisten Begriffe die sich auf R und RStudio beziehen englischsprachig. Sinnvolle Übersetzungen existieren meist nicht. Auch wäre es nicht zielführend diese Begriffe selbst zu übersetzen da dies nur unnötig verwirren würde. Einer der wichtigsten Skills die Sie im Umgang mit einer Sprache wie R entwickeln müssen, ist das gezielte Suchen nach Problemen beziehungsweisen deren Lösungen in Büchern und vor allem auch im Internet. Dazu benötigen Sie das englischsprachige Fachvokabular. Aus diesem Grund wurden englischsprachigen Fachbegriffe eingebunden ohne sie zu übersetzen.

Die Namen von R packages werden fett geschrieben. Da R case sensitive ist, also Groß- und Kleinschreibung nicht beliebig austauschbar ist, werden die Namen der packages exakt so geschrieben wie sie benannt sind, auch wenn sie am Satzbeginn stehen. Ein Beispiel ist: tidytext

Alle Codebeispiele sind in code font gesetzt. Teilweise im Text: print("Hello World"), teilweise als code block:

print("Hello World!")
## [1] "Hello World!"

Der output des R codes wird direkt innerhalb des code blocks hinter ## gedruckt.

Ich empfehle dringend den Inhalt der code blocks selbst in RStudio laufen zu lassen und den code dabei auch selbst zu tippen statt ihn zu kopieren. Um eine Sprache wir R zu erlernen, muss man sie regelmäßig selbst schreiben. Nur so können die Namen häufig genutzter Funktionen sowie die R syntax in Ihr “muscle memory” übergehen.

Danksagung

Besonderer Dank gilt Lukas Höttges für die Unterstützung bei der Erstellung dieser Website. Gleichermaßen danke ich den aktuellen und ehemaligen Teammitgliedern des Lehrstuhls für Methoden der empirischen Sozialforschung an der Universität Potsdam für ihr wertvolles Feedback zu technischen und inhaltlichen Fragen in diversen Kaffeepausen und Zoom-Gesprächen.

Dank gilt auch den Erstellern der genutzten R packages, insbesondere bookdown und tidyverse, sowie der gesamten R community.

Colophon

sessioninfo::session_info()
## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.1.2 (2021-11-01)
##  os       Ubuntu 20.04.4 LTS
##  system   x86_64, linux-gnu
##  ui       X11
##  language (EN)
##  collate  en_US.UTF-8
##  ctype    en_US.UTF-8
##  tz       Europe/Berlin
##  date     2022-03-26
##  pandoc   2.11.4 @ /usr/lib/rstudio/bin/pandoc/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  package     * version date (UTC) lib source
##  assertthat    0.2.1   2019-03-21 [1] CRAN (R 4.1.1)
##  backports     1.4.0   2021-11-23 [1] CRAN (R 4.1.2)
##  bookdown    * 0.24    2021-09-02 [1] CRAN (R 4.1.2)
##  broom         0.7.10  2021-10-31 [1] CRAN (R 4.1.2)
##  bslib         0.3.1   2021-10-06 [1] CRAN (R 4.1.2)
##  cellranger    1.1.0   2016-07-27 [1] CRAN (R 4.1.1)
##  cli           3.1.0   2021-10-27 [1] CRAN (R 4.1.2)
##  codetools     0.2-18  2020-11-04 [4] CRAN (R 4.0.3)
##  colorspace    2.0-2   2021-06-24 [1] CRAN (R 4.1.1)
##  crayon        1.4.2   2021-10-29 [1] CRAN (R 4.1.2)
##  DBI           1.1.1   2021-01-15 [1] CRAN (R 4.1.1)
##  dbplyr        2.1.1   2021-04-06 [1] CRAN (R 4.1.1)
##  digest        0.6.29  2021-12-01 [1] CRAN (R 4.1.2)
##  dplyr       * 1.0.7   2021-06-18 [1] CRAN (R 4.1.1)
##  ellipsis      0.3.2   2021-04-29 [1] CRAN (R 4.1.1)
##  evaluate      0.14    2019-05-28 [1] CRAN (R 4.1.1)
##  fansi         0.5.0   2021-05-25 [1] CRAN (R 4.1.1)
##  fastmap       1.1.0   2021-01-25 [1] CRAN (R 4.1.1)
##  forcats     * 0.5.1   2021-01-27 [1] CRAN (R 4.1.1)
##  fs            1.5.2   2021-12-08 [1] CRAN (R 4.1.2)
##  generics      0.1.1   2021-10-25 [1] CRAN (R 4.1.2)
##  ggplot2     * 3.3.5   2021-06-25 [1] CRAN (R 4.1.1)
##  glue          1.6.0   2021-12-17 [1] CRAN (R 4.1.2)
##  gtable        0.3.0   2019-03-25 [1] CRAN (R 4.1.1)
##  haven         2.4.3   2021-08-04 [1] CRAN (R 4.1.1)
##  hms           1.1.1   2021-09-26 [1] CRAN (R 4.1.2)
##  htmltools     0.5.2   2021-08-25 [1] CRAN (R 4.1.1)
##  httr          1.4.2   2020-07-20 [1] CRAN (R 4.1.1)
##  jquerylib     0.1.4   2021-04-26 [1] CRAN (R 4.1.1)
##  jsonlite      1.7.2   2020-12-09 [1] CRAN (R 4.1.1)
##  knitr       * 1.36    2021-09-29 [1] CRAN (R 4.1.2)
##  lifecycle     1.0.1   2021-09-24 [1] CRAN (R 4.1.2)
##  lubridate     1.8.0   2021-10-07 [1] CRAN (R 4.1.2)
##  magrittr      2.0.1   2020-11-17 [1] CRAN (R 4.1.1)
##  modelr        0.1.8   2020-05-19 [1] CRAN (R 4.1.1)
##  munsell       0.5.0   2018-06-12 [1] CRAN (R 4.1.1)
##  pillar        1.6.4   2021-10-18 [1] CRAN (R 4.1.2)
##  pkgconfig     2.0.3   2019-09-22 [1] CRAN (R 4.1.1)
##  purrr       * 0.3.4   2020-04-17 [1] CRAN (R 4.1.1)
##  R6            2.5.1   2021-08-19 [1] CRAN (R 4.1.1)
##  Rcpp          1.0.7   2021-07-07 [1] CRAN (R 4.1.1)
##  readr       * 2.1.1   2021-11-30 [1] CRAN (R 4.1.2)
##  readxl        1.3.1   2019-03-13 [1] CRAN (R 4.1.1)
##  reprex        2.0.1   2021-08-05 [1] CRAN (R 4.1.1)
##  rlang         0.4.12  2021-10-18 [1] CRAN (R 4.1.2)
##  rmarkdown     2.13    2022-03-10 [1] CRAN (R 4.1.2)
##  rstudioapi    0.13    2020-11-12 [1] CRAN (R 4.1.1)
##  rvest         1.0.2   2021-10-16 [1] CRAN (R 4.1.2)
##  sass          0.4.0   2021-05-12 [1] CRAN (R 4.1.1)
##  scales        1.1.1   2020-05-11 [1] CRAN (R 4.1.1)
##  sessioninfo   1.2.2   2021-12-06 [1] CRAN (R 4.1.2)
##  stringi       1.7.6   2021-11-29 [1] CRAN (R 4.1.2)
##  stringr     * 1.4.0   2019-02-10 [1] CRAN (R 4.1.1)
##  tibble      * 3.1.6   2021-11-07 [1] CRAN (R 4.1.2)
##  tidyr       * 1.1.4   2021-09-27 [1] CRAN (R 4.1.2)
##  tidyselect    1.1.1   2021-04-30 [1] CRAN (R 4.1.1)
##  tidyverse   * 1.3.1   2021-04-15 [1] CRAN (R 4.1.1)
##  tzdb          0.2.0   2021-10-27 [1] CRAN (R 4.1.2)
##  utf8          1.2.2   2021-07-24 [1] CRAN (R 4.1.1)
##  vctrs         0.3.8   2021-04-29 [1] CRAN (R 4.1.1)
##  withr         2.4.3   2021-11-30 [1] CRAN (R 4.1.2)
##  xfun          0.30    2022-03-02 [1] CRAN (R 4.1.2)
##  xml2          1.3.3   2021-11-30 [1] CRAN (R 4.1.2)
##  yaml          2.2.1   2020-02-01 [1] CRAN (R 4.1.1)
## 
##  [1] /home/jakobtures/R/x86_64-pc-linux-gnu-library/4.1
##  [2] /usr/local/lib/R/site-library
##  [3] /usr/lib/R/site-library
##  [4] /usr/lib/R/library
## 
## ──────────────────────────────────────────────────────────────────────────────