Lições do módulo (2/2)
Mutações e agregações
Além de selecionar e filtrar, o dplyr oferece recursos poderosos para criar novas colunas calculadas e resumir dados agregando-os em grupos.
Criando novas colunas: mutate()
O verbo mutate() permite calcular novas colunas ou modificar as existentes, mantendo todas as colunas originais intactas.
# Adds a 'double_salary' column computed as 'salary' multiplied by 2
df %>%
mutate(double_salary = salary * 2)
# You can create multiple columns at once
df %>%
mutate(
total_cost = quantity * price,
tax = total_cost * 0.22
)Agrupamento e agregação: group_by() e summarise()
Freqüentemente, a análise de dados requer o cálculo de estatísticas resumidas (por exemplo, média, soma, contagem) para grupos específicos de linhas (por exemplo, cálculo do salário médio de cada departamento).
1. group_by()
Agrupa o quadro de dados pelos valores de uma ou mais colunas. Por si só, não altera a aparência visual dos dados, mas sinaliza ao dplyr que as operações subsequentes devem ser executadas "grupo por grupo".
2. summarise() (ou summarize())
Recolhe muitas linhas em uma única linha de resumo aplicando funções estatísticas como mean(), sum(), min(), max() ou n() (que conta linhas).
# Calculates the average salary per department
df %>%
group_by(department) %>%
summarise(mean_salary = mean(salary))Se você quiser contar quantos registros pertencem a cada grupo:
# Counts how many employees are in each city
df %>%
group_by(city) %>%
summarise(count = n())Experimente você mesmo
Exercício 1: Crie uma coluna calculada
Dado o quadro de dados df, crie uma nova coluna chamada total_price multiplicando a coluna de quantidade pela coluna de preço usando mutate(). Salve o resultado em df_new.
Mostrar dica
Use mutate(total_price = amount * price) dentro de um pipeline no df.
Solução disponível após 3 tentativas
Exercício 2: Agrupar e resumir com a média
Calcule a média da coluna salário, agrupando os registros pela coluna departamento. Salve a coluna agregada com o nome salário_médio e atribua o resultado final a df_grouped.
Mostrar dica
EUA df %>% group_by(departamento) %>% resumir(salário_médio = média(salário))
Solução disponível após 3 tentativas
Exercício 3: Contar elementos por grupo
Conte o número de linhas para cada cidade (coluna cidade). Atribua a contagem à variável count dentro de summarise() usando a função n() e salve o resultado final em df_counts.
Mostrar dica
Combina group_by(city) com summarise(count = n()) em um pipeline.
Solução disponível após 3 tentativas
Exercício 4: Vários resumos
Calcule o valor mínimo (min_price) e o valor máximo (max_price) do agrupamento da coluna de preço pela coluna de categoria. Salve o resultado em df_summary.
Mostrar dica
Dentro de summarise(), separe as métricas min_price = min(price) e max_price = max(price) com uma vírgula.
Solução disponível após 3 tentativas
Exercício 5: Agrupamento e filtros combinados
Escreva um pipeline que agrupe df pela coluna departamento, calcule a média de salário salvando-o na nova coluna avg_salary usando mutate() (Nota: use mutate, não summarise, para manter todas as linhas) e, finalmente, filtre para manter apenas registros com salário estritamente maior que avg_salary. Salve em res.
Mostrar dica
EUA df %>% group_by(departamento) %>% mutate(avg_salary = média(salário)) %>% filter(salário > avg_salary)
Solução disponível após 3 tentativas