library(dplyr)
# fake Datensatz: z.B. Anzahl korrekte Antworten von 20 Fragen und
# mittlere RT fuer 2 Gruppen A und B
df <- data.frame(gruppe = factor(rep(c("A", "B"), each = 5)),
n_korrekt = rbinom(n = 10, size = 20, prob = 0.6),
n_fragen = 20,
rt = 1 + rgamma(n = 10, shape = 1, rate = 1))
df
## gruppe n_korrekt n_fragen rt
## 1 A 9 20 3.394741
## 2 A 13 20 1.584363
## 3 A 11 20 2.733756
## 4 A 13 20 1.275956
## 5 A 10 20 1.556605
## 6 B 12 20 1.462874
## 7 B 13 20 1.663921
## 8 B 16 20 2.286541
## 9 B 15 20 1.910482
## 10 B 14 20 1.362311
df_grouped_by_gruppe <- df %>% group_by(gruppe)
df_grouped_by_gruppe
## # A tibble: 10 x 4
## # Groups: gruppe [2]
## gruppe n_korrekt n_fragen rt
## <fctr> <int> <dbl> <dbl>
## 1 A 9 20 3.394741
## 2 A 13 20 1.584363
## 3 A 11 20 2.733756
## 4 A 13 20 1.275956
## 5 A 10 20 1.556605
## 6 B 12 20 1.462874
## 7 B 13 20 1.663921
## 8 B 16 20 2.286541
## 9 B 15 20 1.910482
## 10 B 14 20 1.362311
Wenn mutate() verwendet wird, werden alle Variablen beibehalten und wir erhalten eine neue Variable:
df_grouped_by_gruppe %>%
mutate(group_mean_rt = mean(rt))
## # A tibble: 10 x 5
## # Groups: gruppe [2]
## gruppe n_korrekt n_fragen rt group_mean_rt
## <fctr> <int> <dbl> <dbl> <dbl>
## 1 A 9 20 3.394741 2.109084
## 2 A 13 20 1.584363 2.109084
## 3 A 11 20 2.733756 2.109084
## 4 A 13 20 1.275956 2.109084
## 5 A 10 20 1.556605 2.109084
## 6 B 12 20 1.462874 1.737226
## 7 B 13 20 1.663921 1.737226
## 8 B 16 20 2.286541 1.737226
## 9 B 15 20 1.910482 1.737226
## 10 B 14 20 1.362311 1.737226
# oder
df %>%
group_by(gruppe) %>%
mutate(group_mean_rt = mean(rt))
## # A tibble: 10 x 5
## # Groups: gruppe [2]
## gruppe n_korrekt n_fragen rt group_mean_rt
## <fctr> <int> <dbl> <dbl> <dbl>
## 1 A 9 20 3.394741 2.109084
## 2 A 13 20 1.584363 2.109084
## 3 A 11 20 2.733756 2.109084
## 4 A 13 20 1.275956 2.109084
## 5 A 10 20 1.556605 2.109084
## 6 B 12 20 1.462874 1.737226
## 7 B 13 20 1.663921 1.737226
## 8 B 16 20 2.286541 1.737226
## 9 B 15 20 1.910482 1.737226
## 10 B 14 20 1.362311 1.737226
Wenn wir summarise() verwenden, erhalten wir eine Zusammenfassung:
df %>%
group_by(gruppe) %>%
summarise(group_mean_rt = mean(rt))
## # A tibble: 2 x 2
## gruppe group_mean_rt
## <fctr> <dbl>
## 1 A 2.109084
## 2 B 1.737226
df %>%
group_by(gruppe) %>%
summarise(group_mean_korrekt = mean(n_korrekt))
## # A tibble: 2 x 2
## gruppe group_mean_korrekt
## <fctr> <dbl>
## 1 A 11.2
## 2 B 14.0