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
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_metadataporartist_namee, em seguida:- Resuma a média por grupo de
durationcomo uma nova coluna,mean_duration. - Atribua os resultados a
duration_by_artist.
- Resuma a média por grupo de
- 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
___