У меня более сотни переменных, для которых я пытаюсь вычислить частоту и процент. Как я могу сохранить факторный порядок значений каждой переменной в выходных данных? Обратите внимание, что указывать порядок для каждой переменной вне набора данных нецелесообразно, поскольку у меня более 100 переменных.
Пример данных:
df <- data.frame(gender=factor(c("male", "female", "male", NA), levels=c("male", "female")),
disease=factor(c("yes","yes","no", NA), levels=c("yes", "no")))
df
gender disease
1 male yes
2 female yes
3 male no
4 <NA> <NA>
Пытаться:
df %>% gather(key, value, factor_key = T) %>%
group_by(key, value) %>%
summarise(n=n()) %>%
ungroup() %>%
group_by(key) %>%
mutate(percent=n/sum(n))
Выход:
# A tibble: 6 x 4
# Groups: key [2]
key value n percent
<fct> <chr> <int> <dbl>
1 gender female 1 0.25
2 gender male 2 0.5
3 gender NA 1 0.25
4 disease no 1 0.25
5 disease yes 2 0.5
6 disease NA 1 0.25
Желаемый результат: пол как мужской, женский и болезнь как да, нет.