У меня есть это df
:
> df <- data.frame(Adults = sample(0:5, 10, replace = TRUE),
+ Children = sample(0:2, 10, replace = TRUE),
+ Teens = sample(1:3, 10, replace = TRUE),
+ stringsAsFactors = FALSE)
> df
Adults Children Teens
1 5 0 1
2 5 1 2
3 5 2 3
4 5 2 2
5 0 1 2
6 5 1 3
7 0 2 3
8 4 2 1
9 4 0 1
10 1 2 1
Мы видим, что Children
не имеет 3,4,5
значений, а Teens
не имеет 0,4,5
значений.Однако мы знаем, что Adults
, Children
и Teens
могут иметь значение от 0 to 5
.
Когда я использую group_by()
с summarise()
, summarise
удаляет столбцы, которые я не группирую.Код:
df %>%
group_by(Adults) %>% mutate(n_Adults = n()) %>%
group_by(Teens) %>% mutate(n_Teens = n()) %>%
group_by(Children) %>% mutate(n_Children = n())
И когда я группирую по c(0,1,2,3,4,5)
(чтобы получить все возможные значения), это выдает мне эту ошибку:
Error in mutate_impl(.data, dots) : Column `c(0, 1, 2, 3, 4, 5)` must be length 10 (the number of rows) or one, not 6
Я ищуэти выходные данные:
Values n_Adults n_Children n_Teens p_Adults p_Children p_Teens
0 2 2 0 0.2 0.2 0
1 1 3 4 0.1 0.1 0.4
2 0 5 3 0 0 0.3
3 0 0 3 0 0 0.3
4 2 0 0 0.2 0.2 0
5 5 0 0 0.5 0.5 0
Где n_
- это счет соответствующего столбца, а p_
- это процент соответствующего столбца.