Pular para o conteúdo principal
Módulo 4 · Lição 2 de 28/10 no curso~15 min
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.

R
# 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).

R
# 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:

R
# 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

Exercício#r.m4.l2.e1
Tentativas: 0Carregando…

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.

Carregando editor…
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

Exercício#r.m4.l2.e2
Tentativas: 0Carregando…

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.

Carregando editor…
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

Exercício#r.m4.l2.e3
Tentativas: 0Carregando…

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.

Carregando editor…
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

Exercício#r.m4.l2.e4
Tentativas: 0Carregando…

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.

Carregando editor…
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

Exercício#r.m4.l2.e5
Tentativas: 0Carregando…

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.

Carregando editor…
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