6.7 Agrupamiento
La función group_by()
genera agrupamientos virtuales. Divide a una base de datos en función de una columna categórica (factor), pero esta división no se almacena como tal. Si se escogiera como columna de agrupamiento un factor con tres niveles, no esperes ver como resultado tres tablas, cada una con las filas de cada nivel. Este agrupamiento virtual solo permite que las siguientes funciones de la pipeline traten por separado a cada nivel.
Esto es muy útil cuando se debe generar resúmenes estadísticos, por ejemplo promedio y desviación estándar, de variables separado por niveles de un factor en la tabla.
En el siguiente ejemplo solo veremos la agrupación, visible como un dato extra mostrado en consola impreso encima la tabla. Más adelante se usará agrupamiento dentro de una pipeline más realista.
ungroup()
al final producirá errores cuando más adelante se usa la base de datos resultante en otras pipelines. Nunca dejes un group_by()
sin desagrupar al final.
Ejemplo 6.13 Seleccionar las columnas Country
, Year
, Polio
, Diph
, y agrupar la base de datos WHO
por año (columna Year
). Mostrar las primeras 6 filas.
# Para este ejemplo no usaremos ungroup()
# con la finalidad de mostrar el resultado
# textual que aparece sobre una tabla agrupada
# indicando los grupos >> Groups: Year [6]
%>%
WHO ::select(Country, Year, Polio, Diph) %>%
dplyrgroup_by(Year) %>%
head()
# # A tibble: 6 × 4
# # Groups: Year [6]
# Country Year Polio Diph
# <chr> <dbl> <dbl> <dbl>
# 1 Afghanistan 2015 6 65
# 2 Afghanistan 2014 58 62
# 3 Afghanistan 2013 62 64
# 4 Afghanistan 2012 67 67
# 5 Afghanistan 2011 68 68
# 6 Afghanistan 2010 66 66
group_by()
es ungroup()
.