ComenzarEmpieza gratis

Grupos: geniales para la música y para los datos

Un problema habitual de análisis es cómo calcular estadísticas resumidas para cada grupo de datos. Por ejemplo, quizá quieras conocer tus ingresos por ventas por mes o por región. En R, el proceso de dividir tus datos en grupos, aplicar una estadística de resumen a cada grupo y combinar los resultados en una única estructura de datos se conoce como «split-apply-combine». El concepto es mucho más antiguo: SQL tiene la sentencia GROUP BY desde hace décadas. El término «map-reduce» es un concepto similar, donde «map» es, a grandes rasgos, análogo a los pasos de «split» y «apply», y «reduce» corresponde a «combine». El enfoque de dplyr/sparklyr consiste en usar group_by() antes de mutate() o summarize(). Esta función recibe los nombres sin comillas de las columnas por las que quieres agrupar. Por ejemplo, para calcular la media de la columna x para cada combinación de valores en las columnas grp1 y grp2, escribirías lo siguiente.

a_tibble %>%
  group_by(grp1, grp2) %>%
  summarize(mean_x = mean(x))

Ten en cuenta que las columnas que pasas a group_by() suelen ser variables categóricas. Por ejemplo, si quisieras calcular el peso medio de las personas en función de su altura, no tendría sentido agrupar por altura, ya que la altura de cada persona es única. En cambio, podrías usar cut() para convertir las alturas en distintas categorías y calcular el peso medio de cada una.

Este ejercicio forma parte del curso

Introducción a Spark con sparklyr en R

Ver curso

Instrucciones del ejercicio

Se ha creado una conexión a Spark llamada spark_conn. También se ha predefinido un tibble asociado a los metadatos de las pistas almacenados en Spark como track_metadata_tbl.

  • Agrupa el contenido de track_metadata por artist_name y, a continuación:
    • Resume la media por grupo de duration como una nueva columna, mean_duration.
    • Asigna los resultados a duration_by_artist.
  • Encuentra a los artistas con las canciones más cortas ordenando las filas en orden ascendente de mean_duration.
  • Del mismo modo, encuentra a quienes tienen las canciones más largas ordenando en orden descendente de mean_duration.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

duration_by_artist <- track_metadata_tbl %>%
  # Group by artist
  ___ %>%
  # Calc mean duration
  ___

duration_by_artist %>%
  # Sort by ascending mean duration
  ___

duration_by_artist %>%
  # Sort by descending mean duration
  ___
Editar y ejecutar código