# pib per capita médio dos países do continente americano
mean(gapminder$gdpPercap[gapminder$continent == "Americas"])
[1] 7136.1104
IFMG - Campus Formiga
23 de abril de 2025
O que vimos até hoje?
Aula 1 ✅
Aula 2 ✅
Metodologia CRISP-DM ✅
Tipos de Análise ✅
Configurações: Git/GitHub ✅
Aula 3 ✅
Introdução ao RStudio ✅
Aula 4 ✅
Introdução ao Git e GitHub ✅
Aula 5 ✅
Breve Revisão do IDE RStudio ✅
Introdução ao Sistema de Publicação Quarto ✅
Sessão Prática Guiada com Relatório 1 ✅
Aula 6 ✅
Parte I ✅
Parte II ✅
Aula 7 ✅
Introdução ao sistema Quarto (continuação) ✅
Introdução à Linguagem R (continuação) ✅
Tópicos
Diretrizes para Aulas Mais Produtivas
🔊 Mantenha conversas em volume baixo
⌨️ Código com método:
95% dos erros são evitáveis com:
🤝 Inteligência colaborativa:
💪 Capacidade de Resolver Problemas
Cada erro resolvido é uma evolução da sua habilidade analítica
Instruções
Abra o RStudio e o seu Projeto da Disciplina
Crie a subpasta 04-relatorio dentro da pasta relatorios.
Acesse o site da disciplina e baixe o arquivo 04-relatorio.zip
Descompacte o arquivo, copie/recorte o arquivo 04-relatorio.qmd
e cole dentro da subpasta 04-relatorio.
Fase 2 (Compreensão dos Dados) e Fase 3 (Preparação dos dados) consomem entre 60-80% do tempo de um projeto de análise ou ciência de dados
Foco em habilidades práticas e aplicáveis
Administradores precisam não apenas entender dados para tomada de decisão, mas também desenvolver, pelo menos, a capacidade de elaborar relatórios de análises descritivas e diagnósticas que fundamentem decisões estratégicas.
Para isso, a habilidade de saber efetuar manipulação de dados com a linguagem R e o pacote dplyr são de extrema importância.
Veremos o poder da linguagem R e do dplyr, principalmente, para a fase 3.
A ênfase da disciplina está nas aplicações práticas, não necessariamente no desenvolvimento de modelos estatísticos complexos.
O pacote dplyr no ecossistema tidyverse
O dplyr é um dos pacotes principais do tidyverse, criado por Hadley Wickham
Seu nome vem de “data plier” (alicate de dados) - uma ferramenta para manipular dados
Foi projetado seguindo a filosofia “tidy data” (dados organizados) - cada variável é uma coluna, cada observação é uma linha
É escrito em C++ para performance otimizada
Permite manipulação de dados de forma consistente, clara e encadeada
Contexto do dplyr
O pacote dplyr é parte do tidyverse, um conjunto de pacotes desenvolvidos para análise de dados em R
Enquanto os pacotes readr e readxl ajudam na importação de dados, o dplyr é especializado na manipulação desses dados
O dplyr trabalha com uma estrutura de dados de R que já conhecemos: data frames/tibbles
As funções do dplyr foram projetadas para serem usadas com o operador pipe (%>%
), que já vimos brevemente no relatório Junglivet
Princípios fundamentais
O dplyr foi construído sobre o conceito de “tidy data” (dados organizados):
Esta estrutura:
Cada variável é uma coluna; Cada observação é uma linha; Cada valor é uma célula.
O dplyr como uma “linha de produção”
Imagine o processo de análise de dados como uma linha de produção:
Os dados brutos são sua “matéria-prima”
Cada função do dplyr é uma “estação de trabalho” que realiza uma operação específica:
filter()
seleciona apenas os materiais que atendem a certos critériosselect()
separa apenas as partes que você precisamutate()
transforma ou cria novos componentesgroup_by()
+ summarize()
agrupam e calculam estatísticasarrange()
organiza o resultado finalO operador pipe (%>%
) é a “esteira” que move os dados de uma estação para outra
Operações rotineiras
Muitas vezes precisamos filtrar somente certas linhas (observações ) de uma data frame.
Muitas vezes precisamos selecionar somente certas colunas (variáveis) de uma data frame.
Muitas vezes precisamos agrupar os dados por uma determinada(s) variável(s) categórica.
Muitas vezes precisamos calcular estatísticas descritivas para esses subconjuntos de dados (função summarize
).
# pib per capita médio dos países do continente americano
mean(gapminder$gdpPercap[gapminder$continent == "Americas"])
[1] 7136.1104
R base (aninhado):
Vantagens e Desvantagens
Base R: Funções aninhadas
Vantagens: Não requer pacotes adicionais, disponível em qualquer instalação do R
Desvantagens:
dplyr: Gramática da manipulação de dados
Vantagens:
Desvantagens:
Gramática da manipulação de dados
O fluxo típico de uma análise de dados com dplyr segue este padrão:
filter
)select
)mutate
)group_by
)summarize
)arrange
)Informações sobre expectativa de vida por continente
# Um fluxo completo de análise com dplyr
relatorio_expectativa <- gapminder %>%
# Filtra apenas os dados de 2007
filter(year == 2007) %>%
# Agrupa por continente
group_by(continent) %>%
# Calcula estatísticas resumidas
summarize(
expectativa_media = mean(lifeExp),
expectativa_minima = min(lifeExp),
expectativa_maxima = max(lifeExp),
num_paises = n()
) %>%
# Ordena do maior para o menor
arrange(desc(expectativa_media))
# Visualiza o resultado final
relatorio_expectativa
Este exemplo demonstra como um conjunto de funções do dplyr pode ser combinado para transformar dados brutos em um relatório informativo com apenas algumas linhas de código.
O que já vimos na prática
No relatório Junglivet, já utilizamos algumas funções do dplyr:
# Trecho do relatório Junglivet
dados_destilaria_limpos <- dados_destilaria %>%
# Remove a coluna MONTH
select(-MONTH) %>%
# Renomeia as colunas
rename(
dia = DAY,
mestre_responsavel = MANUFACTURER,
# ... outras colunas renomeadas
) %>%
# Converte cada variável para seu tipo adequado
mutate(
dia = as.numeric(dia),
# ... outras conversões
) %>%
# Remove linhas com valores ausentes
drop_na()
Agora vamos entender em detalhes cada uma dessas funções e como aplicá-las em diferentes contextos de análise de dados.
Pacote dplyr: Vantagens
O pacote dplyr fornece uma série de funções muito úteis para manipular data frames de uma maneira que:
Objetivos de Aprendizagem
Vamos aprender 5 das funções mais usadas do pacote dplyr,
Função | Descrição |
---|---|
dplyr::filter() |
para filtrar linhas (observações) |
dplyr::select() |
para selecionar colunas (variáveis ) |
dplyr::mutate() |
para criar novas variáveis |
dplyr::group_by() |
para operações “por grupo” |
dplyr::summarize() |
para calcular estatísticas |
dplyr::arrange() |
para ordenar resultados |
Além disso, veremos como como usar o operador pipe (%>%
) para combiná-las.
Recomendações para código eficiente e legível
Indentação consistente:
Nomeie seu código:
dados_filtrados
, relatorio_vendas_por_regiao
Comente seu código:
Dividir análises complexas em etapas:
Consistência de estilo:
Descrição
O pacote gapminder da linguagem R contém uma data frame também chamada gapminder.
A df gapminder fornece informações detalhadas sobre indicadores socioeconômicos reais de vários países ao longo do tempo.
Este conjunto de dados é muito utilizado no ensino da linguagem R e de métodos estatísticos.
Descrição
A data frame gapminder contém as seguintes variáveis:
Variável | Descrição |
---|---|
country |
nome do país. |
continent |
continente ao qual o país pertence. |
year |
ano da observação. |
lifeExp |
expectativa de vida ao nascer, em anos. |
pop |
população total do país. |
gdpPercap |
PIB per capita, ajustado pelas diferenças de poder de compra. |
Para obter uma visão geral da estrutura da df gapminder, podemos usar a função glimpse do pacote dplyr:
Rows: 1,704
Columns: 6
$ country <fct> "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", …
$ continent <fct> Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, …
$ year <int> 1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1992, 1997, …
$ lifeExp <dbl> 28.801, 30.332, 31.997, 34.020, 36.088, 38.438, 39.854, 40.8…
$ pop <int> 8425333, 9240934, 10267083, 11537966, 13079460, 14880372, 12…
$ gdpPercap <dbl> 779.44531, 820.85303, 853.10071, 836.19714, 739.98111, 786.1…
# Mostrando que o gapminder já está no formato tidy
# Cada linha é uma observação (país-ano)
# Cada coluna é uma variável
# Cada célula é um valor único
head(gapminder)
# A tibble: 6 × 6
country continent year lifeExp pop gdpPercap
<fct> <fct> <int> <dbl> <int> <dbl>
1 Afghanistan Asia 1952 28.8 8425333 779.
2 Afghanistan Asia 1957 30.3 9240934 821.
3 Afghanistan Asia 1962 32.0 10267083 853.
4 Afghanistan Asia 1967 34.0 11537966 836.
5 Afghanistan Asia 1972 36.1 13079460 740.
6 Afghanistan Asia 1977 38.4 14880372 786.
# A tibble: 6 × 6
country continent year lifeExp pop gdpPercap
<fct> <fct> <int> <dbl> <int> <dbl>
1 Zimbabwe Africa 1982 60.4 7636524 789.
2 Zimbabwe Africa 1987 62.4 9216418 706.
3 Zimbabwe Africa 1992 60.4 10704340 693.
4 Zimbabwe Africa 1997 46.8 11404948 792.
5 Zimbabwe Africa 2002 40.0 11926563 672.
6 Zimbabwe Africa 2007 43.5 12311143 470.
Selecionando variáveis (colunas) de uma data frame
A função select()
permite escolher quais variáveis (colunas) você quer manter ou remover de uma data frame
Enquanto select()
trabalha com colunas (variáveis), filter()
trabalha com linhas (observações),
É essencial para simplificar seus dados, focando apenas nas variáveis relevantes para sua análise
Cenário: Análise financeira de países
Imagine que você é um analista financeiro internacional e precisa preparar um relatório sobre PIB:
# Seleciona apenas as variáveis relevantes para análise financeira
dados_financeiros <- gapminder %>%
select(country, year, gdpPercap)
# Visualiza as primeiras linhas do resultado
head(dados_financeiros)
# A tibble: 6 × 3
country year gdpPercap
<fct> <int> <dbl>
1 Afghanistan 1952 779.
2 Afghanistan 1957 821.
3 Afghanistan 1962 853.
4 Afghanistan 1967 836.
5 Afghanistan 1972 740.
6 Afghanistan 1977 786.
Interpretação: Este código seria equivalente a extrair apenas os dados financeiros relevantes (país, ano e PIB per capita) de uma grande base de dados para uma análise específica de desempenho econômico.
Diversas formas de selecionar variáveis
# Selecionar variáveis por inclusão
gapminder %>% select(country, year, gdpPercap)
# Selecionar variáveis por exclusão (com sinal de menos)
gapminder %>% select(-continent, -lifeExp)
# Selecionar variáveis em sequência
gapminder %>% select(country:pop)
# Selecionar variáveis que começam com determinado texto
gapminder %>% select(starts_with("c"))
# Selecionar variáveis que terminam com determinado texto
gapminder %>% select(ends_with("p"))
# Selecionar variáveis que contêm determinado texto
gapminder %>% select(contains("exp"))
Aplicações práticas em negócios
Estas técnicas são muito úteis quando você trabalha com:
Os erros mais comuns com select()
Erro | Errado | Correto |
---|---|---|
Nomes de variáveis com aspas | select(gapminder, "country") |
select(gapminder, country) |
Tentar condições como em filter | select(gapminder, gdpPercap > 1000) |
Use filter() para isso, não select()
|
Não salvar o resultado | gapminder %>% select(country, year) |
dados_novos <- gapminder %>% select(country, year) |
Remover variáveis necessárias |
select(country) e depois tentar usar continent
|
Verifique se manteve todas as variáveis necessárias |
Dica importante:
Lembre-se: select()
é para escolher colunas (variáveis) e filter()
é para escolher linhas (observações)!
Seleção por Exclusão
# A tibble: 1,704 × 5
country year lifeExp pop gdpPercap
<fct> <int> <dbl> <int> <dbl>
1 Afghanistan 1952 28.8 8425333 779.
2 Afghanistan 1957 30.3 9240934 821.
3 Afghanistan 1962 32.0 10267083 853.
4 Afghanistan 1967 34.0 11537966 836.
5 Afghanistan 1972 36.1 13079460 740.
6 Afghanistan 1977 38.4 14880372 786.
7 Afghanistan 1982 39.9 12881816 978.
8 Afghanistan 1987 40.8 13867957 852.
9 Afghanistan 1992 41.7 16317921 649.
10 Afghanistan 1997 41.8 22227415 635.
# ℹ 1,694 more rows
%>%
Combinação de Operações com %>%
Nos slides anteriores, usamos a sintáxe ‘normal’ da linguagem R.
Mas o ponto forte do dplyr está na combinação de várias funções usando o operador pipe %>%
.
Vamos analisar a gramática do uso de funções do dplyr combinadas com o operador %>%
.
Atalho para inserir o operador pipe: Ctrl + shift + M
Significado conceitual do pipe %>%
O operador pipe pode ser lido como “então” ou “em seguida”
Fluxo da esquerda para a direita, similar à leitura natural
Transforma:
funcao(dados, arg1, arg2)
em
dados %>% funcao(arg1, arg2)
Analogia
Uma linha de montagem onde cada função faz uma operação nos dados
Nomeie os resumos calculados com summarize
gapminder %>% # Pegue os dados gapminder, então...
filter(year == 2007) %>% # Filtre para apenas o ano 2007, então...
group_by(continent) %>% # Agrupe por continente, então...
summarize( # Calcule resumos:
exp_vida_media = mean(lifeExp), # expectativa de vida média
populacao_total = sum(pop) # população total
)
Vamos entender o código:
Primeiro invocamos a df gapminder e a passamos, usando o operador pipe %>%
, para a próxima etapa, que é a função select().
Neste caso, não especificamos qual df usamos na função select(), porque que ela obtém essa informação do pipe anterior.
Salvamos o resultado no objeto variaveis_selecionadas
O que você precisa lembrar
Para que serve: Selecionar apenas as colunas (variáveis) que você deseja manter ou remover
Sintaxe básica:
select(país, ano, vendas)
select(-observações, -notas)
select(starts_with("venda"))
select()
trabalha com COLUNASfilter()
trabalha com LINHASExercícios Práticos com select()
Nível 1: Primeiros Passos
Nível 2: Técnicas Avançadas com select()
Desafio: Crie um código que selecione variáveis usando dois métodos diferentes na mesma instrução:
Dica: Lembre-se que você pode combinar seleções com vírgulas e use o atalho Ctrl+Shift+M para inserir o operador pipe (%>%).
Filtrando observações (linhas) de uma data frame
A função filter()
permite filtrar subconjuntos de observações (linhas) que atendem determinadas condições ou critérios.
É uma das funções mais utilizadas na análise de dados para criar subconjuntos específicos dos dados
Pense nela como um “filtro” que deixa passar apenas as observações que atendem aos critérios que você definir
Neste caso, duas linhas atendem às condições
Filtrando observações (linhas) de uma data frame
Imagine que você tem uma planilha de vendas e quer analisar apenas as vendas:
A função filter()
permite fazer essa filtragem de forma rápida e precisa
Operadores na linguagem dos negócios
Operador | Exemplo em Linguagem Natural | Código em R |
---|---|---|
== |
Apenas os países europeus | continent == "Europe" |
!= |
Todos, exceto os países europeus | continent != "Europe" |
> |
Países com PIB per capita maior que 10.000 | gdpPercap > 10000 |
< |
Países com menos de 1 milhão de habitantes | pop < 1000000 |
>= |
Países a partir do ano 2000 | year >= 2000 |
& |
Países europeus a partir de 2000 | continent == "Europe" & year >= 2000 |
| |
Países da Europa ou da Ásia | continent == “Europe” | continent == “Asia” |
Dica
Dica para memorizar:
==
para igualdade (lembre-se: dois sinais de igual, não apenas um)&
para “E” (quero este critério E aquele também)|
para “OU” (quero este critério OU aquele)Cenário: Análise de vendas por continente
Imagine que a data frame gapminder
representa dados de filiais de uma empresa multinacional:
# Filtra apenas países das Américas
# como se fossem filiais da região Américas
filiais_americas <- gapminder %>%
filter(continent == "Americas")
# Visualiza as primeiras 6 linhas do resultado
head(filiais_americas)
# A tibble: 6 × 6
country continent year lifeExp pop gdpPercap
<fct> <fct> <int> <dbl> <int> <dbl>
1 Argentina Americas 1952 62.5 17876956 5911.
2 Argentina Americas 1957 64.4 19610538 6857.
3 Argentina Americas 1962 65.1 21283783 7133.
4 Argentina Americas 1967 65.6 22934225 8053.
5 Argentina Americas 1972 67.1 24779799 9443.
6 Argentina Americas 1977 68.5 26983828 10079.
Interpretação: Este filtro seria equivalente a selecionar apenas dados de filiais localizadas nas Américas para uma análise regional de desempenho.
Perguntas de negócios traduzidas para filter()
Pergunta de Negócio | Código com filter() |
---|---|
Quais países tiveram PIB per capita acima de $20.000 em 2007? | filter(year == 2007 & gdpPercap > 20000) |
Quais países da Ásia tiveram expectativa de vida acima de 75 anos? | filter(continent == "Asia" & lifeExp > 75) |
Quais países tiveram população superior a 100 milhões em 2007? | filter(year == 2007 & pop > 100000000) |
Quais países não são da Europa nem da América? | filter(continent != "Europe" & continent != "Americas") |
Dica prática: Comece sempre pensando na pergunta de negócio, depois traduza para o código
Combinando condições
Há duas maneiras principais de combinar condições:
Dica importante
Com & (“E” lógico) ambas as condições precisam ser TRUE para que a linha seja mantida
Com | (“OU” lógico), apenas uma das condições precisa ser TRUE
Exemplos com diferentes operadores
Aplicações práticas
Utilize operadores relacionais para:
A importância da ordem das operações
# Países europeus em 2007, mostrando apenas país e expectativa de vida
europeus_lifeExp_2007 <- gapminder %>%
filter(continent == "Europe", year == 2007) %>%
select(country, lifeExp)
# Ordenando o resultado por expectativa de vida (decrescente)
europeus_lifeExp_2007_ordenado <- gapminder %>%
filter(continent == "Europe", year == 2007) %>%
select(country, lifeExp) %>%
arrange(desc(lifeExp))
head(europeus_lifeExp_2007_ordenado)
Ordem correta das operações
Lembre-se: primeiro filter(), depois select()!
Os 4 erros mais comuns com filter()
Erro | Errado | Correto |
---|---|---|
Usar = em vez de == | filter(continent = "Europe") |
filter(continent == "Europe") |
Esquecer as aspas em nomes | filter(continent == Europe) |
filter(continent == "Europe") |
Não salvar o resultado | gapminder %>% filter(year == 2007) |
dados_2007 <- gapminder %>% filter(year == 2007) |
Países europeus com alta expectativa de vida em 2007?
# Países europeus com expectativa de vida acima de 78 anos em 2007
resultado_final <- gapminder %>%
# Filtrar por continente, ano e expectativa de vida
filter(continent == "Europe", year == 2007, lifeExp > 78) %>%
# Selecionar variáveis de interesse
select(country, lifeExp, gdpPercap) %>%
# Ordenar por expectativa de vida (decrescente)
arrange(desc(lifeExp))
# Mostrar resultados
resultado_final
Observe o fluxo de análise:
O que você precisa lembrar
Para que serve: Selecionar apenas as linhas (observações) que atendem a determinadas condições
Sintaxe básica:
Comparações mais usadas:
==
(dois sinais de igual!)!=
>
, <
, >=
, <=
Múltiplas condições:
filter(condição1 & condição2)
filter(condição1 | condição2)
Lembre-se sempre de salvar o resultado:
Exercícios Práticos
Nível 1: Primeiros Passos com filter()
Nível 2: Combinando Condições
Crie um filtro para encontrar países que atendam a TODAS estas condições:
Desafio: Encontre países com expectativa de vida acima de 75 anos, mas PIB per capita abaixo de 10.000 dólares em 2007.
Dica: Comece com um filtro simples e depois adicione condições gradualmente
Criando e transformando variáveis
A função mutate()
permite criar novas variáveis ou modificar variáveis existentes
Enquanto filter()
seleciona linhas e select()
seleciona colunas, mutate()
adiciona ou modifica colunas
É como ter uma “calculadora” que cria novas informações a partir dos dados existentes
Ideal para cálculos como: percentuais, totais, médias, categorias, etc.
Cria novas variáveis a partir das variáveis existentes
Como usar mutate() na prática
O que cada parte significa:
Cenário: Relatório de análise comercial
Imagine que a data frame gapminder
contém dados de vendas globais da sua empresa:
# Criando variáveis para análise de vendas
vendas_analise <- gapminder %>%
filter(year == 2007) %>% # Filtra dados somente de 2007
mutate(
# PIB total representa a receita total da região
receita_total = gdpPercap * pop,
# Receita em milhões (para facilitar a leitura)
receita_milhoes = receita_total / 1000000,
# Indicador de destaque (regiões com alta receita por pessoa)
destaque = gdpPercap > 20000
) %>%
# Vamos visualizar apenas algumas colunas e 5 linhas
select(country, receita_milhoes, gdpPercap, destaque) %>%
head(5)
vendas_analise
Interpretação administrativa: Este tipo de transformação é usado diariamente nas empresas para converter dados brutos em métricas de negócios úteis para tomada de decisão.
Transformações mais comuns: Operações aritméticas básicas
# Operações aritméticas básicas com mutate()
gapminder %>%
filter(country == "Brazil", year >= 2000) %>%
mutate(
# Adição: adiciona um valor fixo
pop_ajustada = pop + 1000000,
# Multiplicação: multiplica por um fator
gdp_reais = gdpPercap * 5.2, # Convertendo para reais
# Divisão: divide para mudar a escala
pop_milhoes = pop / 1000000 # População em milhões
) %>%
select(year, pop, pop_ajustada, pop_milhoes, gdpPercap, gdp_reais)
Dica: As operações mais utilizadas em análises de negócios são multiplicação (para fatores, taxas, conversões) e divisão (para mudar escalas e calcular proporções).
O que é a função ifelse()?
A função ifelse()
permite criar novas variáveis categóricas baseadas em condições:
Como funciona: ifelse(condição, valor_se_verdadeiro, valor_se_falso)
Criando KPIs com mutate() e ifelse()
gapminder %>%
filter(year == 2007) %>%
mutate(
pib_total = gdpPercap * pop, # PIB total
pib_percentual_global = (pib_total/sum(pib_total))*100, # % do PIB global
performance = ifelse(gdpPercap > mean(gdpPercap),
"Acima da média",
"Abaixo da média")
) %>%
select(country, pib_total, pib_percentual_global, performance)
Isso mostra como transformar dados brutos em informações gerenciais.
Quando precisamos de mais de duas categorias
case_when()
é como um “sistema de classificação” para criar categorias mais complexas:
# Exemplo de múltiplas categorias
paises_classificados <- gapminder %>%
filter(year == 2007) %>%
mutate(
classe_desenvolvimento = case_when(
gdpPercap < 2000 ~ "Baixo",
gdpPercap < 10000 ~ "Médio",
gdpPercap >= 10000 ~ "Alto"
)
) %>%
select(country, gdpPercap, classe_desenvolvimento) %>%
head(6)
paises_classificados
Como funciona:
condição ~ "valor a atribuir"
Escolhendo a função adequada
Função | Quando usar | Exemplo |
---|---|---|
ifelse() |
Para divisões simples em duas categorias | ifelse(vendas > meta, "Meta atingida", "Meta não atingida") |
case_when() |
Para múltiplas categorias ou condições complexas | Classificar clientes em “Bronze”, “Prata”, “Ouro” e “Platina” baseado em diferentes critérios |
Analogia de negócios:
ifelse()
é como uma decisão “sim/não” (aprovação de crédito simples)
case_when()
é como um sistema de classificação de clientes com várias categorias
Os erros que todos cometem no início
Usar o operador de atribuição errado
mutate(nova_var <- expressão)
❌mutate(nova_var = expressão)
✅Esquecer de salvar o resultado
dados %>% mutate(nova_var = x * 2)
❌ (resultado não salvo)dados_novos <- dados %>% mutate(nova_var = x * 2)
✅Tentar usar variáveis que acabou de criar sem manter os resultados
ERRADO:
CORRETO (Pipeline único):
O que você precisa lembrar
O que faz: mutate()
cria novas variáveis ou modifica existentes
Usos comuns no mundo dos negócios:
Como usar na prática:
Ferramentas complementares:
ifelse()
para classificações simples (sim/não)case_when()
para classificações múltiplasLembre-se de salvar o resultado em um novo objeto:
Exercícios Práticos
Nível 1: Começando com mutate()
Nível 2: Aplicando categorias
Usando ifelse()
, crie uma variável chamada economia_grande
que seja “Sim” quando a população for maior que 50 milhões e “Não” caso contrário.
Desafio: Usando dados de 2007, crie uma variável que classifique os países em três categorias baseadas na expectativa de vida:
Dica: Não se preocupe se não conseguir resolver todos. Foque em entender a lógica!
Agrupando e resumindo dados
A função group_by()
permite agrupar dados por uma ou mais variáveis categóricas
A função summarize()
(ou summarise()
) permite calcular estatísticas resumidas para cada grupo
Estas funções geralmente trabalham juntas como uma ferramenta poderosa para análise
É como criar “subtotais” ou “relatórios consolidados” por categorias (ex: vendas por região, despesas por departamento)
Sintaxe básica
Cenário: Relatório para executivos sobre desempenho regional
Imagine que você é um analista financeiro e precisa preparar um relatório executivo comparando regiões:
# Cria um relatório de PIB médio por continente
relatorio_continentes <- gapminder %>%
filter(year == 2007) %>% # Filtra para dados mais recentes
group_by(continent) %>% # Agrupa por continente
summarize(
PIB_medio = mean(gdpPercap), # Média do PIB per capita
Total_populacao = sum(pop), # População total
Paises_analisados = n(), # Número de países
PIB_minimo = min(gdpPercap), # PIB mínimo
PIB_maximo = max(gdpPercap) # PIB máximo
) %>%
arrange(desc(PIB_medio)) # Ordena do maior para o menor PIB médio
# Visualiza o resultado
relatorio_continentes
Interpretação Este tipo de relatório consolidado por região é crítico para análises comparativas entre mercados e para apresentações executivas. Mostra claramente as estatísticas-chave para cada grupo (continente), facilitando comparações e decisões estratégicas.
Funções Estatísticas da linguagem R
Função | O que calcula | Exemplo em R | Uso em Negócios |
---|---|---|---|
mean() |
Média | mean(vendas) |
Valor médio de vendas por região |
sum() |
Soma total | sum(receita) |
Receita total por categoria |
min() |
Valor mínimo | min(preco) |
Menor preço praticado |
max() |
Valor máximo | max(despesa) |
Maior despesa do período |
sd() |
Desvio padrão | sd(producao) |
Variabilidade da produção |
n() |
Contagem de linhas | n() |
Número de transações |
n_distinct() |
Contagem de valores únicos | n_distinct(cliente) |
Número de clientes únicos |
median() |
Mediana | median(vendas) |
Valor típico de vendas |
Dica para gestores: Sempre inclua tanto medidas de “tendência central” (média, mediana) quanto de “variação” (desvio padrão) para ter uma visão mais completa dos dados.
Análises mais detalhadas
# Análise de expectativa de vida por continente e ano
tendencias_por_continente <- gapminder %>%
group_by(continent, year) %>% # Agrupa por DUAS variáveis
summarize(
expectativa_vida_media = mean(lifeExp),
paises_analisados = n()
) %>%
arrange(continent, year)
# Mostra resultados parciais
tendencias_por_continente %>%
filter(continent == "Americas") %>%
head(3)
# A tibble: 3 × 4
# Groups: continent [1]
continent year expectativa_vida_media paises_analisados
<fct> <int> <dbl> <int>
1 Americas 1952 53.3 25
2 Americas 1957 56.0 25
3 Americas 1962 58.4 25
Contexto empresarial: Este tipo de análise é comum em:
Os erros que todos cometem no início
Erro | Errado | Correto |
---|---|---|
Não usar summarize após group_by | dados %>% group_by(regiao) |
dados %>% group_by(regiao) %>% summarize(...) |
Tentar agrupar antes de filtrar | group_by(regiao) %>% filter(mean(vendas) > 1000) |
Usar filter() ANTES de group_by()
|
Esquecer de desagrupar | Continuar usando dados agrupados | Usar ungroup() quando terminar com análises agrupadas |
Dica: group_by
por si não produz nenhum resultado.
O que você precisa lembrar
Para que servem:
group_by()
: Agrupa dados por categorias (como agrupar linhas em uma planilha)
summarize()
: Calcula estatísticas para cada grupo (como criar subtotais)
Sintaxe básica:
Funções estatísticas básicas:
Fluxo de trabalho típico:
filter()
)group_by()
)summarize()
)arrange()
)Lembre-se sempre de salvar o resultado:
Exercícios Práticos
Nível 1: Primeiros Passos
Nível 2: Análise de Negócios
Imagine que cada país representa uma filial da sua empresa. Crie um relatório que mostre, para cada continente:
Desafio: Crie um relatório que mostre a evolução da expectativa de vida média do continente americano ao longo dos anos (dica: agrupe por ano, filtre para mostrar apenas as Américas).
Dica: Lembre-se de salvar seus resultados em objetos com nomes descritivos e de usar arrange()
para organizar seus resultados de forma lógica.
Ordena resultados
A função arrange()
ordena as linhas (observações) de uma data frame com base nos valores de uma ou mais colunas (variáveis)
Por padrão, organiza em ordem crescente (do menor para o maior)
Use desc()
para ordenar em ordem decrescente (do maior para o menor)
Reordena as linhas de uma data frame segundo uma variável, por padrão em ordem crescente, com desc() em ordem decrescente
Como usar arrange() na prática
desc()
para ordem descrescente (do maior para o menor)Cenário: Relatório de análise de mercado
Imagine que você é um analista de mercado e precisa identificar rapidamente os países mais promissores para expansão:
# Criando um ranking de países por PIB per capita em 2007
ranking_paises <- gapminder %>%
filter(year == 2007) %>% # Filtra dados apenas de 2007
select(country, continent, gdpPercap) %>% # Seleciona colunas relevantes
arrange(desc(gdpPercap)) %>% # Ordena do maior para o menor PIB
head(6) # Mostra os 10 primeiros resultados
# Visualiza o resultado
ranking_paises
# A tibble: 6 × 3
country continent gdpPercap
<fct> <fct> <dbl>
1 Norway Europe 49357.
2 Kuwait Asia 47307.
3 Singapore Asia 47143.
4 United States Americas 42952.
5 Ireland Europe 40676.
6 Hong Kong, China Asia 39725.
Interpretação Este tipo de ordenação é relevante em análises de mercado para identificar rapidamente os países mais ricos (potenciais mercados premium) ou para encontrar as regiões que precisam de mais atenção (ordenando do menor para o maior).
Cuidados ao usar arrange()
Erro | Problema | Solução |
---|---|---|
Ordem incorreta |
arrange(dados, desc()) sem especificar a variável |
arrange(dados, desc(variavel)) |
Tentar ordenar por variável não existente |
arrange(vendas_por_regiao) quando a coluna não existe |
Verificar primeiro os nomes das colunas com names()
|
Não salvar o resultado ordenado | Ordenar mas não atribuir a um objeto | dados_ordenados <- dados %>% arrange(...) |
Lembre-se: A ordenação é temporária se você não salvar o resultado em um novo objeto!
O que você precisa lembrar
Para que serve: Ordenar as linhas (observações) com base nos valores de uma ou mais colunas
Sintaxe básica:
Usos comuns em negócios:
Lembre-se sempre:
desc()
para ordem decrescentearrange(var1, var2)
Exercícios Práticos
Nível 1: Primeiros Passos
Nível 2: Aplicação em Negócios
Imagine que você trabalha no departamento internacional de uma empresa. Crie uma lista dos países das Américas ordenados por população (do maior para o menor) em 2007.
Desafio: Crie um ranking dos continentes baseado na expectativa de vida média de seus países em 2007. Use group_by(), summarize() e arrange().
Dica: Lembre-se de usar head() para limitar o número de resultados quando necessário!
Resumo das seis funções principais
Função | Propósito |
---|---|
dplyr::filter() |
Seleciona linhas baseadas em condições |
dplyr::select() |
Seleciona colunas específicas |
dplyr::mutate() |
Cria ou modifica colunas |
dplyr::group_by() |
Agrupa dados por categorias |
dplyr::summarize() |
Calcula estatísticas resumidas |
dplyr::arrange() |
Ordena linhas |
Lembre-se: O poder do dplyr está em combinar estas funções com o operador pipe %>%
Instruções
Prof. Washington Silva - Introdução à Ciência de Dados