Я получаю неожиданный результат при использовании dplyr
для создания таблицы общей относительной частоты и группировки по двум переменным.Вот пример:
set.seed(1234)
dat1 = data.frame(
color = c(c(rep("red", 4), rep("green", 4))),
type = c(c(rep(c(
"big", "small"
), 4))),
value = sample(1:6, 8, replace = T)
)
dat1 %>% group_by(color, type) %>% summarise(n = n()) %>%
mutate(total = sum(n), rel.freq = n / total)
Вот результат предыдущего кода:
# A tibble: 4 x 5
# Groups: color [2]
color type n total rel.freq
<fct> <fct> <int> <int> <dbl>
1 green big 2 4 0.500
2 green small 2 4 0.500
3 red big 2 4 0.500
4 red small 2 4 0.500
Однако я бы ожидал этого:
# A tibble: 4 x 5
# Groups: color [2]
color type n total rel.freq
<fct> <fct> <int> <int> <dbl>
1 green big 2 8 0.250
2 green small 2 8 0.250
3 red big 2 8 0.250
4 red small 2 8 0.250
Любое пониманиепочему мутирование в трубе dplyr
ниже группирует только по первой переменной группировки (или почему она вообще группируется - мое мнение, что она должна работать с набором данных summarise()
), было бы очень полезно.
В столбце total
должно быть указано, что всего имеется 8 случаев (т. Е. sum(n)
из предыдущего результата в summarise()
должно = 8
).