ComeçarComece de graça

Grupos: ótimos para música e para dados

Um problema comum de análise é como calcular estatísticas-resumo para cada grupo de dados. Por exemplo, você pode querer saber sua receita de vendas por mês ou por região. Em R, o processo de dividir os dados em grupos, aplicar uma estatística-resumo a cada grupo e combinar os resultados em uma única estrutura de dados é conhecido como "split-apply-combine". O conceito é bem mais antigo: SQL tem a cláusula GROUP BY há décadas. O termo "map-reduce" é um conceito semelhante, em que "map" é, grosso modo, análogo às etapas de "split" e "apply", e "reduce" corresponde a "combine". A abordagem do dplyr/sparklyr é usar group_by() antes de mutate() ou summarize(). Essa função recebe os nomes não colocados entre aspas das colunas pelas quais você quer agrupar. Por exemplo, para calcular a média da coluna x, para cada combinação de valores nas colunas grp1 e grp2, você escreveria o seguinte:

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

Note que as colunas passadas para group_by() geralmente devem ser variáveis categóricas. Por exemplo, se você quiser calcular o peso médio das pessoas em relação à altura, não faz sentido agrupar por altura, já que a altura de cada pessoa é única. Você pode, no entanto, usar cut() para converter as alturas em categorias e calcular o peso médio para cada categoria.

Este exercício faz parte do curso

Introdução ao Spark com sparklyr em R

Ver curso

Instruções do exercício

Uma conexão Spark foi criada para você como spark_conn. Um tibble vinculado aos metadados das faixas armazenados no Spark já foi definido como track_metadata_tbl.

  • Agrupe o conteúdo de track_metadata por artist_name e, em seguida:
    • Resuma a média por grupo de duration como uma nova coluna, mean_duration.
    • Atribua os resultados a duration_by_artist.
  • Encontre os artistas com as músicas mais curtas ordenando as linhas em ordem crescente de mean_duration.
  • Da mesma forma, encontre aqueles com as músicas mais longas ordenando em ordem decrescente de mean_duration.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 e executar o código