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