Skip to content

Instantly share code, notes, and snippets.

@selfawaresoup
Created November 1, 2023 22:32
Show Gist options
  • Save selfawaresoup/c1931eb17a289c5d2de55667acf9fc6a to your computer and use it in GitHub Desktop.
Save selfawaresoup/c1931eb17a289c5d2de55667acf9fc6a to your computer and use it in GitHub Desktop.
dplyr-pipe tutorial (deutsch)
################################################################################
# "Pipe" operator in R: %>% #
################################################################################
# Vorbereitung
# Bitte einmal dieses R-Script mit "Source" ausführen, damit alles läuft.
# Kann sein, dass R-Studio eine Warnung anzeigt, dass ein Packet fehlt,
# In dem Fall ruhig bestätigen, und dann wird dplyr automatisch installiert.
#
# Alternativ geht das auch mit:
# install.packages("dplyr")
# Oder im "Packages" Fenster unten rechts in RStudio
# (wichtig: "dplyr", nicht "dbplyr")
# Dplyr laden, generell sehr nützliches Paket
# https://dplyr.tidyverse.org/index.html
library(dplyr)
################################################################################
# Einfaches Beispiel
c(1,2,3,4,5) -> numbers
# diese Zeile …
numbers %>% sum()
# macht genau das gleiche wie
sum(numbers)
# Allgemein: a %>% b() nimmt die Variable a und sie als Argument
# an die Funktion b: also b(a)
#
# Wenn b noch weitere Argumente hat, werden die HINTER a eingereiht:
# a %>% b(x, y, z) wird zu b(a, x, y, z)
#
# Das ganze lässt sich dann immer weiter verketten:
# a %>% b(x) %>% c(y, z)
# entspricht
# c(b(a, x), y, z)
# und da zeigt sich wieviel unübersichtlicher es ohne %>% wird
# Manche benutzen auch |>, was das gleiche tut wie %>%,
# aber nur in neueren R Versionen geht. |> benötigt aber nicht dplyr
################################################################################
# Realistisches Beispiel
# Beispieldaten
read.csv(text="wochentag,Veranstaltung
1, Übung Statistik Kurs A
2, Übung Statistik Kurs B
3, Vorlesung Einführung in die Psychologie
3, SE Wie wahr ist die Wahrnehmung?
3, Vorlesung Statistik
3, Vorlesung Start ins Studium
3, Übung Start ins Studium Kurs A
3, Übung Start ins Studium Kurs B
3, Übung Start ins Studium Kurs C
3, Übung Start ins Studium Kurs D
3, Ringvorlesung Anwendungsfelder der Psychologie
4, Übung Statistik I Kurs C
4, Übung Statistik I Kurs D
4, Vorlesung Allgemeine Psychologie
4, Seminar Allgemeine Psychologie Kurs A
4, Seminar Allgemeine Psychologie Kurs B
5, Seminar Biologosche Psychologie Kurs A
5, Seminar Biologosche Psychologie Kurs B
5, Seminar Biologosche Psychologie Kurs C
5, Tutorium Statistik I Kurs A
5, Tutorium Statistik I Kurs B") -> veranstaltungen
# Wochentag von Zahl in Faktor umwandeln
veranstaltungen$wochentag %>% as.factor() -> veranstaltungen$wochentag
# Labels für die Faktor-Spalte Wochentag
c("Montag",
"Dienstag",
"Mittwoch",
"Donnerstag",
"Freitag") -> levels(veranstaltungen$wochentag)
# wichtig: bei Mehrzeiligen Anweisungen muss %>% immer VOR den Zeilenumbruch
# Sonst nimmt R an, dass die Anweisung nach der ersten Zeile schon zuende ist
veranstaltungen %>%
group_by(wochentag) %>% # gruppiert nach Wochentag
summarise(anzahl = n()) %>% # zählt die Verstaltungen für jeden Tag
arrange(-anzahl) %>% # sortiert nach anzahl, absteigend
top_n(1) # lässt nur den obersten Eintrag stehen
# Ergebnis: Mittwoch hat die meisten Verasnstaltungen, 9 insgesamt
# Ohne %>% wäre genau das gleiche:
top_n(
arrange(
summarise(
group_by(veranstaltungen, wochentag),
anzahl = n()),
-anzahl),
1)
# … sehr unübersichtlich, schwer zu lesen und sehr fehleranfällig
#
# Verschachtelte Klammern sind eine extrem häufige Fehlerquelle in den meisten
# Programmiersprachen. %>% hilft sehr dabei, sie zu vermeiden.
################################################################################
# Esther Weidauer, 2023 #
# #
# Bye <3 #
################################################################################
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment