Estou trabalhando em R.
Tenho alguns dados sobre o pessoal de uma escola:
data <- data.frame(person_id = c(1, 2, 3, 4, 5, 6, 7, 8),
disability_status = c("yes", "no", "yes", "no", "yes", "no", "yes", "no"),
age_group = c("20-30","30-40","20-30","30-40","20-30","30-40","20-30","30-40"),
teacher = c("yes", "no", "no", "yes", "no","yes", "no", "yes" ))
Eu escrevi uma função que cria somas em quais variáveis você insere nela. O argumento "group_tag" serve para ajudar na depuração posterior em meu código.
group_the_data <- function(data,
variable,
group_tag) {
grouped_output <- data %>%
mutate(flag = 1) %>%
group_by({{variable}}) %>%
summarise(number_staff = sum(flag, na.rm = T)) %>%
mutate(grouping_tag := {{group_tag}})
return(grouped_output)
}
Em seguida, uso a função para agrupar por status_de_incapacidade, grupo_etário e professor, por sua vez:
disability_grouped <- group_the_data(data = data,
variable = disability_status,
group_tag = "disability status")
age_group_grouped <- group_the_data(data = data,
variable = age_group,
group_tag = "age group")
role_grouped <- group_the_data(data = data,
variable = teacher,
group_tag = "role")
Depois de ter os dataframes necessários, eu os uno:
all_data_grouped <- bind_rows(disability_grouped, age_group_grouped, role_grouped)
Existe uma maneira de percorrer as variáveis para que eu não precise escrever a função três vezes?
Ou usar uma das funções do Apply é uma ideia melhor?
Você pode usar
lapply
oupurrr::map
para iterar através de suas variáveis. Para fazer isso, precisamos percorrer strings, mas não variáveis, então você precisará dapick
variável emgroup_by
.Da mesma forma, use
purrr::map2
se quiser ter "variável" e "tag_grupo" diferentes: