Calcular porcentajes por grupos con dplyr
A la hora de sumarizar datos con dplyr podemos calcular porcentajes dentro de grupos o subgrupos con transmute
. La sintaxis es sencilla pero tiene la peculiaridad que sólo obtendremos como salida lo que indiquemos en transmute. Mejor lo entendéis en un ejemplo:
Conjunto de datos aleatorio de ejemplo:
library(dplyr)
observaciones = 100
grupo_1 = rpois(observaciones, 0.5)
grupo_2 = rpois(observaciones, 1)
df = cbind.data.frame(grupo_1, grupo_2) %>% mutate(id_cliente=n())
Sumarizamos por grupos:
df %>% group_by(grupo_1, grupo_2) %>% summarise(clientes = n())
Contamos clientes y calculamos el porcentaje sobre el total:
df %>% group_by(grupo_1, grupo_2) %>%
summarise(clientes = n(),
pct_total = n()/nrow(df))
Suelo usar nrow
se aceptan sugencias. Calculamos el porcentaje para el subgrupo del grupo_1, primer ejemplo de uso de transmute: