Criação do seu repositório do projeto RStudio da disciplina no 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 ✅
Execução dos comandos git essenciais ✅
Aula 6 ✅
Parte I ✅
O Relatório Junglivet e a Metodologia CRISP-DM ✅
Primeiro contato com a linguagem R por meio dos códigos do relatório ✅
Parte II ✅
Para alunos com projetos estruturados ✅
Atividade prática ✅
Para alunos com dificuldades técnicas ✅
Atendimento individualizado para estruturação de projetos ✅
Aula 7 ✅
Introdução ao sistema Quarto (continuação) ✅
Gerar relatório no formato pdf ✅
Gerar relatório no formato docx ✅
Introdução à Linguagem R (continuação) ✅
Conceitos: Variáveis e observações ✅
Estrutura tabular organizada de dados ✅
Tipos e classes de dados principais em R ✅
Estruturas de dados: vetores e data frames ✅
Aula 8 ✅
Início do estudo do pacote dplyr para manipulação de dados ✅
CRISP-DM: Fase 2 (Entendimento dos dados) e Fase 3 (Preparação dos dados) ✅
de um projeto de análise ou ciência de dados ✅
O que é o dplyr? ✅
A Filosofia Tidy Data (Dados Organizados) ✅
Dados Organizados (Tidy Data) ✅
Por que usar o dplyr? ✅
Fluxo de trabalho com dplyr ✅
Boas Práticas com dplyr ✅
Função dplyr::select() ✅
Função dplyr::filter() ✅
Aula 9 ✅
Solução dos exercícios práticos sobre as funções select e filter ✅
Função dplyr::mutate() ✅
Aula 10 ✅
Soluções dos exercícios práticos sobre a função mutate ✅
funções dplyr::group_by(), dplyr::summarize() e dplyr::arrange() ✅
Aula 11 ✅
Metodologia CRISP-DM e Pacote dplyr ✅
Revisão sobre Dados Organizados (Tidy Data) ✅
Exemplos de Dados Desorganizados Comuns em Administração ✅
Pacote tidyr: Função pivot_longer ✅
Aula 12 ✅
Metodologia CRISP-DM e o tidyverse ✅
Dados Organizados: Potencializando Análises ✅
Aula 13 ✅
Avaliação 1 ✅
Nesta Aula
Tópicos
Tipos Básicos de joins
Arquivo para esta Aula
Instruções
Abra o RStudio e o seu Projeto da Disciplina
Crie a subpasta 07-relatorio dentro da pasta relatorios.
Acesse o site da disciplina e baixe o arquivo 07-relatorio.zip
Descompacte o arquivo, copie/recorte o arquivo 07-relatorio.qmd e cole dentro da subpasta 07-relatorio.
Diretrizes para Aulas Mais Produtivas
🔊 Mantenha conversas em volume baixo
⌨️ Código com método:
95% dos erros são evitáveis com:
Atenção na digitação
Respeitar a sequência lógica de etapas
Revisão antes de pedir ajuda
🤝 Inteligência colaborativa:
Compartilhe conhecimento
Resolva questões técnicas simples com colegas próximos
Reserve ao professor as dúvidas conceituais complexas
💪 Capacidade de Resolver Problemas
Cada erro resolvido é uma evolução da sua habilidade analítica
Pacote dplyr: Tipos Básicos de joins
O Problema da Fragmentação de Dados
A Realidade dos Dados Empresariais
Dados corporativos raramente estão em uma única tabela ou sistema:
Informações de clientes em um CRM
Dados de vendas em outro sistema
Informações de produtos em um ERP
Dados de RH em um sistema específico
A tomada de decisão gerencial exige integração desses dados
Exemplo: Para analisar a rentabilidade por cliente, precisamos combinar:
Perfil do cliente (tabela de clientes)
Histórico de compras (tabela de vendas)
Margens dos produtos (tabela de produtos)
Joins são operações fundamentais para esta integração
CRISP-DM e Joins
Joins na Fase 3 (Preparação dos Dados) do CRISP-DM
Joins são operações fundamentais na Fase 3 (Preparação dos Dados) de CRISP-DM, permitindo:
Integrar dados fragmentados que estão distribuídos em múltiplas tabelas relacionadas entre si
Consolidar informações de diferentes fontes ou sistemas para análise (vendas + produtos + clientes)
Enriquecer dados principais com informações contextuais adicionais (ex: adicionar categoria de produto aos dados de vendas)
Completar o ciclo de preparação iniciado com:
Importação de dados (read_csv(), read_xlsx())
Organização de dados (pivot_longer()) para análise
Limpeza de dados (rename()``,as.___()`)
Filtragem (filter()) e seleção (select()) de dados relevantes
Transformação de dados (mutate()) para criar novas variáveis
Manipulação de dados ( group_by(), summarize() e arrange())
Joins: integrando múltiplas fontes em um arquivo de dados coeso
Dados bem integrados facilitam as Fases 4 e 5 (Modelagem e Avaliação) por fornecerem uma visão completa do problema
Joins no dplyr
O que são joins?
Joins são operações que combinam duas tabelas de dados
Em termos simples, joins são como “colar” duas tabelas lado a lado, combinando linhas que têm valores em comum, como um “código de cliente” ou “código de produto”
No pacote dplyr, temos funções específicas para cada tipo de join:
left_join(): Mantém todas as linhas da tabela da esquerda
inner_join(): Mantém apenas correspondências entre as tabelas
full_join(): Mantém todas as linhas de ambas as tabelas
right_join(): Mantém todas as linhas da tabela da direita
São essenciais quando precisamos combinar informações que estão separadas
# Crian a tabela de clientes clientes <-tribble(~id_cliente, ~nome_cliente, ~cidade,"C001", "Empresa Alpha", "São Paulo","C002", "Empresa Beta", "Rio de Janeiro","C003", "João Silva", "Belo Horizonte","C005", "Maria Oliveira", "Recife")# exibe a tabelaclientes
# A tibble: 4 × 3
id_cliente nome_cliente cidade
<chr> <chr> <chr>
1 C001 Empresa Alpha São Paulo
2 C002 Empresa Beta Rio de Janeiro
3 C003 João Silva Belo Horizonte
4 C005 Maria Oliveira Recife
# A tibble: 4 × 3
id_cliente nome_cliente cidade
<chr> <chr> <chr>
1 C001 Empresa Alpha São Paulo
2 C002 Empresa Beta Rio de Janeiro
3 C003 João Silva Belo Horizonte
4 C005 Maria Oliveira Recife
Observe que há dados “imperfeitos”:
Produto “P006” está nas vendas, mas não na tabela de produtos
Cliente “C004” está nas vendas, mas não na tabela de clientes
Cliente “C005” está na tabela de clientes, mas não tem vendas
Chaves em Joins - Conceito Básico
Como tabelas se relacionam
Chaves são as colunas usadas para combinar as tabelas
Na prática:
A tabela de clientes tem um “codigo_cliente” único para cada cliente
A tabela de vendas usa esse mesmo “codigo_cliente” para indicar qual cliente fez cada compra
O “codigo_cliente” é a “chave” que permite combinar as informações das duas tabelas
Nas funções de join do dplyr, as chaves são especificadas pelo argumento by
Tipos de Chaves em Bancos de Dados Relacionais
Chaves Primárias e Estrangeiras
Chave primária: Identificador único para cada registro em uma tabela
Ex: codigo_cliente na tabela de clientes identifica unicamente cada cliente
Não pode conter valores duplicados ou nulos
Chave estrangeira: Coluna que referencia a chave primária de outra tabela
Ex: codigo_cliente na tabela de vendas é uma chave estrangeira
Estabelece relações entre tabelas e mantém a integridade referencial
Analogia: Pense em chaves como um sistema de CPF
A chave primária é como o CPF único de cada pessoa
A chave estrangeira é como mencionar o CPF de alguém em um documento
Os joins são como reunir documentos diferentes sobre a mesma pessoa usando seu CPF
Integridade referencial: Garante que relações entre tabelas permaneçam válidas
Impede a criação de vendas para clientes inexistentes
Fundamental para a confiabilidade dos dados em sistemas empresariais
Exemplos Comuns de Chaves
Chaves em sistemas empresariais
Exemplos comuns de chaves em sistemas de informação empresariais:
“codigo_produto” para relacionar produtos e vendas
“codigo_funcionario” para relacionar funcionários e departamentos
“numero_pedido” para relacionar pedidos e itens de pedido
“codigo_fiscal” para relacionar notas fiscais e itens fiscais
“matricula_aluno” em sistemas educacionais
“numero_prontuario” em sistemas de saúde
A identificação correta das chaves é fundamental para o sucesso de joins e para garantir a integridade das análises de dados.
Desafios com Chaves em Joins
Problemas comuns ao trabalhar com chaves
Chaves duplicadas:
Podem gerar múltiplas linhas no resultado (multiplicação de dados)
Exemplo: Um cliente vinculado a várias vendas resulta em múltiplas linhas
Chaves ausentes:
Resultam em valores NA quando usando left, right ou full joins
Exemplo: Vendas sem cliente cadastrado ou produtos sem vendas
Inconsistência de tipos:
Problemas quando a mesma chave tem tipos diferentes em tabelas distintas
Exemplo: código armazenado como texto em uma tabela e número em outra
Diferenças de nomenclatura:
Quando a mesma informação tem nomes diferentes em sistemas distintos
Requer especificação explícita: by = c("codigo_produto" = "codigo")
Sintaxe Básica dos Joins
Como usar joins no dplyr (simplificado)
# Formato básico (simples)resultado <- x %>%tipo_join(y, by ="coluna_comum")# Exemplo com nossas tabelasvendas_com_produtos <- vendas %>%left_join(produtos, by ="codigo_produto")
O que cada parte significa:
vendas: A primeira tabela (tabela da esquerda)
produtos: A segunda tabela (tabela da direita)
by = "codigo_produto": A coluna comum que existe em ambas as tabelas
left_join: O tipo de join que queremos usar
vendas_com_produtos: O resultado da combinação que salvaremos
Visão Geral dos Joins
Em resumo:
Tipo de Join
Função no dplyr
Quando usar
Left join
left_join()
Quando você precisa manter todos os registros da tabela principal (à esquerda)
Inner join
inner_join()
Quando você precisa apenas dos registros que existem em ambas as tabelas
Full join
full_join()
Quando você precisa de todos os dados, independentemente de correspondências
Right join
right_join()
Quando você precisa manter todos os registros da tabela secundária (à direita)
Left Join
Função left_join()
resultado <- x %>%left_join(y, by ="chave")
Características do Left Join
Mantém todos os registros da tabela da esquerda (primeira tabela)
Para registros sem correspondência na tabela da direita, preenche com NA
Quando usar:
Quando a primeira tabela é sua tabela principal
Quando você precisa preservar todos os registros da primeira tabela
Quando você quer adicionar informações extras à sua tabela principal
Exemplo: Manter todas as vendas e adicionar dados dos produtos
Exemplo: Left Join
Left Join entre Vendas e Produtos
# Left join: todas as vendas, mesmo sem correspondência na tabela de produtos# Passo 1: Pegamos a tabela 'vendas' # Passo 2: Mantemos TODAS as vendas e adicionamos dados de produtos quando existiremvendas_produtos_left <- vendas %>%left_join(produtos, by ="codigo_produto")# Visualizando o resultadovendas_produtos_left
Agora a venda do produto “P006” (id_venda 5) aparece no resultado
Como esse produto não existe na tabela de produtos, a coluna de produtos contém NA
O left_join é o join mais comum - preserva todos os registros da tabela principal
Inner Join
Função inner_join()
resultado <- x %>%inner_join(y, by ="chave")
Características do Inner Join
Mantém apenas os registros que possuem correspondência em ambas as tabelas
Descarta linhas que não têm correspondência
Quando usar:
Quando você precisa garantir que todos os registros tenham informações completas
Quando registros sem correspondência não são relevantes para sua análise
Exemplo: Relatório de vendas que precisa mostrar dados do produto
Exemplo: Inner Join
Inner Join entre Vendas e Produtos
# Inner join: apenas vendas de produtos que existem no cadastro# Passo 1: Pegamos a tabela 'vendas'# Passo 2: Combinamos com a tabela 'produtos' usando codigo_produtovendas_produtos <- vendas %>%inner_join(produtos, by ="codigo_produto")# Visualizando o resultadovendas_produtos
A venda do produto “P006” (id_venda 5) não aparece no resultado
Isso acontece porque esse produto não existe na tabela de produtos
O inner_join mantém apenas as vendas de produtos que existem no cadastro
Full Join
Função full_join()
resultado <- x %>%full_join(y, by ="chave")
Características do Full Join
Mantém todos os registros de ambas as tabelas
Para registros sem correspondência em qualquer tabela, preenche com NA
Quando usar:
Quando você precisa de uma visão completa de todos os dados
Quando quer identificar inconsistências entre tabelas
Quando é importante não perder nenhum registro de nenhuma tabela
Exemplo: Relatório completo de produtos e vendas
Exemplo: Full Join
Full Join entre Vendas e Produtos
# Full join: todas as vendas e todos os produtos# Passo 1: Pegamos a tabela 'vendas'# Passo 2: Combinamos com produtos mantendo TUDO de ambas as tabelascompleto_vendas_produtos <- vendas %>%full_join(produtos, by ="codigo_produto")# Visualizando o resultadocompleto_vendas_produtos
A venda do produto “P006” que não existe na tabela de produtos aparece com NAs
O produto “P005” que não tem vendas também aparece com NAs
O full_join é útil para ver “tudo junto” e identificar inconsistências
Right Join
Função right_join()
resultado <- x %>%right_join(y, by ="chave")
Características do Right Join
Mantém todos os registros da tabela da direita (segunda tabela)
Para registros sem correspondência na tabela da esquerda, preenche com NA
Quando usar:
Quando a segunda tabela é sua tabela principal
Quando você precisa garantir que todos os registros da segunda tabela estejam presentes
Na prática, muitas vezes é mais fácil usar left_join invertendo a ordem das tabelas
Exemplo: Ver todos os produtos, mesmo os que não foram vendidos
Exemplo: Right Join
Right Join entre Vendas e Produtos
# Right join: todos os produtos, mesmo sem vendas# Passo 1: Pegamos a tabela 'vendas'# Passo 2: Combinamos com TODOS os produtos, mesmo os sem vendasprodutos_vendas_right <- vendas %>%right_join(produtos, by ="codigo_produto")# Visualizando o resultadoprodutos_vendas_right
Agora o produto “P005” (Cadeira Ergonômica) aparece no resultado
Como esse produto não tem vendas, as colunas de vendas aparecem com NA
O right_join é útil para identificar produtos sem movimento
Exemplo: Combinando Três Tabelas
Combinando vendas, produtos e clientes
# Passo 1: Combinamos vendas com produtos# Passo 2: Depois combinamos o resultado com clientesrelatorio_completo <- vendas %>%# Primeiro, adicionamos informações de produtosleft_join(produtos, by ="codigo_produto") %>%# Depois, adicionamos informações de clientesleft_join(clientes, by ="id_cliente") %>%# Selecionamos apenas as colunas mais importantes para o relatórioselect( id_venda, data_venda, id_cliente, nome_cliente, cidade, codigo_produto, nome_produto, quantidade, preco_unitario )# Visualizando o resultadoprint(relatorio_completo, n =Inf)
# A tibble: 6 × 9
id_venda data_venda id_cliente nome_cliente cidade codigo_produto nome_produto
<dbl> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 2025-04-15 C001 Empresa Alp… São P… P001 Notebook Pro
2 2 2025-04-16 C002 Empresa Beta Rio d… P002 Smartphone X
3 3 2025-04-18 C001 Empresa Alp… São P… P003 Monitor 24p…
4 4 2025-04-20 C003 João Silva Belo … P002 Smartphone X
5 5 2025-04-22 C002 Empresa Beta Rio d… P006 <NA>
6 6 2025-04-23 C004 <NA> <NA> P004 Mouse Gamer
# ℹ 2 more variables: quantidade <dbl>, preco_unitario <dbl>
Observe como:
Combinamos três tabelas em sequência
Usamos left_join para manter todas as vendas
Algumas informações têm NA quando não há correspondência
Dicas para Uso Eficiente de Joins
Dicas práticas para iniciantes
Conheça seus dados antes de combinar:
Verifique se as tabelas têm as “chaves” correspondentes
Entenda o que significam valores ausentes (NAs)
Filtre antes de combinar:
Se você só precisa de alguns dados, filtre-os antes de fazer joins
Isso torna a análise mais rápida e clara
Verifique o resultado:
O número de linhas faz sentido?
Há valores NA inesperados?
Os totais parecem corretos?
Na dúvida, use left_join:
É o mais comum e seguro para iniciantes
Mantém todos os registros da tabela principal
O Desafio dos Sistemas Reais
Situação Comum em Ambientes Empresariais
No mundo ideal, todos os sistemas usariam os mesmos nomes para as mesmas informações…
Mas na prática:
O sistema de Vendas pode usar codigo_produto
O Cadastro de Produtos pode usar codigo
O ERP pode usar cod_prod
O sistema legado pode usar id_produto
Resultado: Tentar unir estas tabelas com a sintaxe básica falha:
# Esta tentativa falha:vendas %>%left_join(produtos, by ="codigo_produto") # ERRO: 'codigo_produto' não encontrado em 'produtos'
Como resolver este problema comum?
A Solução
Sintaxe para Colunas com Nomes Diferentes
O dplyr permite especificar explicitamente quais colunas devem ser correspondidas:
# Sintaxe para colunas com nomes diferentestabela1 %>%left_join(tabela2, by =c("nome_na_tabela1"="nome_na_tabela2"))
Como interpretar:
"nome_na_tabela1": Nome da coluna na primeira tabela (esquerda)
"nome_na_tabela2": Nome da coluna na segunda tabela (direita)
O operador = estabelece a correspondência entre as colunas
Analogia: Você está criando um “dicionário de tradução” entre os sistemas:
“Quando eu digo codigo_produto, você entende codigo”
Exemplo
Cenário: Relatório de Vendas Integrado
# Sistema de Cadastro de Produtos (departamento de Compras)produtos_cadastro <-tribble(~codigo, ~descricao, ~valor_unitario, ~categoria,"P001", "Notebook Pro", 4500, "Eletrônicos","P002", "Smartphone X", 2800, "Eletrônicos","P003", "Monitor 24pol", 1200, "Informática")# Sistema de Vendas (departamento Comercial)vendas_sistema <-tribble(~id_venda, ~cod_produto, ~data_venda, ~qtd,1, "P001", "2025-04-15", 1,2, "P002", "2025-04-16", 2,3, "P003", "2025-04-18", 2)# Integrando os sistemas com diferentes nomenclaturasrelatorio_vendas <- vendas_sistema %>%left_join(produtos_cadastro, by =c("cod_produto"="codigo")) %>%select(id_venda, data_venda, cod_produto, descricao, qtd, valor_unitario) %>%mutate(valor_total = qtd * valor_unitario) %>%arrange(data_venda)# Resultado: um relatório integradorelatorio_vendas
Identifique o join mais adequado para cada cenário
Para cada situação abaixo, identifique qual tipo de join seria mais apropriado: left_join, inner_join, full_join ou right_join:
Relatório de Vendas: Você precisa criar um relatório mostrando todas as vendas realizadas com detalhes dos produtos. Algumas vendas têm códigos de produtos que não existem no cadastro, mas você precisa manter TODAS as vendas no relatório.
Análise de Estoque: O gerente de inventário solicitou uma lista de todos os produtos cadastrados, indicando quais foram vendidos no último mês. É importante que TODOS os produtos apareçam, mesmo os que não tiveram vendas.
Auditoria de Qualidade: O auditor precisa verificar se há inconsistências entre vendas e produtos. Ele solicitou uma análise que mostre TODAS as vendas e TODOS os produtos, permitindo identificar vendas sem produtos cadastrados e produtos sem vendas.
Dashboard de Performance: O diretor comercial pediu um dashboard que mostre apenas vendas confirmadas com informações completas de cliente e produto. Registros com informações incompletas devem ser excluídos.
Dica: Pense em quais tabelas são “obrigatórias” e quais são “opcionais” em cada cenário!
Exercício 2
Joins Simples - Lista de vendas com nome do produto
Você precisa criar uma lista simples que mostre, para cada venda, o nome do produto vendido:
Una as tabelas de vendas e produtos
Selecione apenas as colunas id_venda, data_venda, nome_produto e quantidade
Ordene por data_venda
# Complete o códigolista_vendas_produtos <- vendas %>%# 1. Escolha o tipo de join adequado para manter todas as vendas___(produtos, by ="codigo_produto") %>%# 2. Selecione apenas as colunas importantesselect( id_venda, data_venda, nome_produto, quantidade ) %>%# 3. Ordene por data da vendaarrange(___)
Dica: Pense em qual tipo de join deve usar. Você quer manter todas as vendas mesmo sem produto cadastrado ou apenas as vendas de produtos conhecidos?
Exercício 3
Relatório de clientes e suas compras
Crie um relatório que mostre todos os clientes, mesmo aqueles que não fizeram compras:
Una as tabelas de clientes e vendas de forma a manter todos os clientes
Selecione as colunas id_cliente, nome_cliente, cidade, id_venda e data_venda
Ordene por nome_cliente
# Complete o códigorelatorio_clientes <- clientes %>%# 1. Escolha o tipo de join adequado para manter todos os clientes___(vendas, by ="id_cliente") %>%# 2. Selecione apenas as colunas importantesselect( id_cliente, nome_cliente, cidade, id_venda, data_venda ) %>%# 3. Ordene por nome do clientearrange(___)
Dica: Como queremos manter todos os clientes, mesmo os que não fizeram compras, qual tipo de join devemos usar?
Exercício 4
Relatório de Valor Total por Venda
Qual função de join e quais operações de manipulação de dados seriam necessárias para criar um relatório financeiro que mostre todas as vendas com o valor total calculado (quantidade × preço unitário), incluindo vendas de produtos que podem não estar cadastrados?
O diretor financeiro solicitou um relatório simplificado que mostre o valor total de cada venda:
# Complete o código para calcular o valor total de cada vendarelatorio_financeiro <- vendas %>%# Combine vendas com produtos usando left_joinleft_join(produtos, by ="___") %>%# Calcule o valor total da vendamutate(valor_total = ___) %>%# Selecione apenas as colunas relevantes para o relatórioselect( id_venda, data_venda, codigo_produto, nome_produto, quantidade, preco_unitario, valor_total ) %>%# Ordene do maior valor total para o menorarrange(___)
Perguntas para reflexão:
Qual foi a venda de maior valor?
O que acontece com as vendas de produtos não cadastrados?
Como este relatório poderia ajudar na tomada de decisões comerciais?
Resumo: Joins
Pontos-chave para lembrar
Joins unem tabelas que estão separadas
Combinam dados de clientes, produtos, vendas, etc.
Permitem análises mais completas e informativas
Os tipos mais importantes são:
left_join(): Mantém todos os registros da tabela principal (o mais usado)
inner_join(): Mantém apenas registros com correspondência em ambas tabelas
full_join(): Mantém todos os registros de ambas as tabelas
Na prática, left_join é o mais comum:
Mantém todos os registros da tabela principal
Adiciona informações complementares quando disponíveis
Evita a perda de registros importantes
Comece simples e avance gradualmente:
Primeiro faça joins entre duas tabelas
Depois adicione mais tabelas conforme necessário
Verifique os resultados a cada passo
Resumo dos Joins
Guia Rápido de Joins no dplyr
Tipo de Join
Função
Resultado
Quando Usar
Analogia de Negócios
Inner Join
inner_join()
Apenas registros com correspondência
Análises que exigem dados completos
Relatório com apenas vendas confirmadas
Left Join
left_join()
Todos os registros da tabela esquerda
Manter a tabela principal intacta
Relatório de todas as vendas (com ou sem produto cadastrado)
Right Join
right_join()
Todos os registros da tabela direita
Quando a 2ª tabela é a principal
Catálogo com todos os produtos (vendidos ou não)
Full Join
full_join()
Todos os registros de ambas as tabelas
Análises completas e auditorias
Verificação de inconsistências no sistema
Dica para lembrar: Pense no “lado” que você quer preservar:
Inner = Só o que está nos dois lados
Left = Tudo do lado esquerdo (1ª tabela)
Right = Tudo do lado direito (2ª tabela)
Full = Tudo de ambos os lados
Sintaxe Comparativa
Estrutura comum dos diferentes tipos de joins
# LEFT JOIN: todos os registros da tabela1tabela1 %>%left_join(tabela2, by ="coluna_comum")# INNER JOIN: apenas registros com correspondênciatabela1 %>%inner_join(tabela2, by ="coluna_comum")# FULL JOIN: todos os registros de ambas as tabelastabela1 %>%full_join(tabela2, by ="coluna_comum")# RIGHT JOIN: todos os registros da tabela2tabela1 %>%right_join(tabela2, by ="coluna_comum")
Observe que:
A estrutura básica é idêntica para todos os joins:
Comece com a primeira tabela
Use o operador pipe %>%
Aplique a função de join
Adicione a segunda tabela e a coluna comum
Só muda o nome da função, que indica qual tipo de join realizar:
inner_join, left_join, right_join ou full_join
Quando as colunas têm nomes diferentes, use esta sintaxe:
# Quando colunas têm nomes diferentes nas tabelasvendas %>%left_join(produtos, by =c("codigo_produto"="codigo"))# ^ coluna na tabela vendas ^ coluna na tabela produtos
Onde Aplicar Joins
Aplicações práticas em Administração
Finanças:
Unir dados de vendas com custo de produtos para calcular margens
Combinar pagamentos com faturas para análise de fluxo de caixa
Marketing:
Relacionar campanhas com vendas para medir eficácia
Unir dados de clientes com comportamento de compra para segmentação
Recursos Humanos:
Combinar dados de funcionários com departamentos
Unir registros de treinamento com avaliações de desempenho
Logística:
Integrar pedidos com status de entrega
Combinar dados de produtos com níveis de estoque
Vendas:
Unir vendas com produtos e clientes para relatórios completos
Combinar metas com desempenho real para análise de performance