In der Tabelle kann die Note jeder Person aus jeder Prüfung ausgelesen werden. Überlegt kurz, welche Variablen wir bei diesem Satz generieren möchten!
statclass
## name stat1 stat2 r spss
## 1 momo 12 5 6 9
## 2 kim 14 10 13 15
## 3 sascha 7 4 4 1
names
: momo, sascha, kimcourse
: statI, statII, r, spssgrade
: Wert in Abhängigkeit der zwei oberen.
Es sind also zwei Informationen in den Spalten stat1
, stat2
, r
und spss
. Nämlich welcher Test es ist (implizit über Variablenname) und die Note. D.h. hier sind Werte als Variablenname angegeben und das verstößt gegen die Regeln eines tidy Datensatzes. Wir benötigen in einem tidy-Format aber beide Informationen explizit! Denn die Spaltennamen sind hier Werte (Art der Prüfung) und nicht einfach Namen.
Um dies zu bereinigen, nutzt man pivot_longer()
. Hierbei geben wir zuerst an, welche Spalten neugeordnet werden sollen (in unserem Fall stat1
bis spss
), dann in welche neuen Variablen die Namen bzw. die Werte gespeichert werden sollen. Mit names_to
benennen wir die neue Variable, die den Test unterscheidet und mit values_to
benennen wir die Variable, die die Noten beinhaltet.
statclassTidy <- statclass %>%
pivot_longer(
stat1:spss,
names_to = "course",
values_to = "grade"
) %>%
arrange(
name,
course
)
statclassTidy
## # A tibble: 12 × 3
## name course grade
## <chr> <chr> <dbl>
## 1 kim r 13
## 2 kim spss 15
## 3 kim stat1 14
## 4 kim stat2 10
## 5 momo r 6
## 6 momo spss 9
## 7 momo stat1 12
## 8 momo stat2 5
## 9 sascha r 4
## 10 sascha spss 1
## 11 sascha stat1 7
## 12 sascha stat2 4
Jetzt haben wir ein long-Format, dass die Datenbearbeitung oft einfacher macht (z.B. mit ggplot2
). Aber Aufpassen: Man kann jetzt nicht einfach mehr einen Mittelwert von grade
berechnen, da dies verschiedene Kurse beinhaltet. Man muss dabei also Bedingungen setzen (wenn man im long-Format ist).
Möchte man dies wieder umkehren, nutzt man die Funktion pivot_wider()
:
statclassRe <- statclassTidy %>%
pivot_wider(
names_from = course,
values_from = grade,
)
statclassRe