Agregando e Juntando dados no R

As ferramentas mais poderosas para a Análise de dados com o R estão contidas no pacote {dplyr}, parte da família do {tidyverse}, que proporciona verbs (funções), que ajudam o usuário a resolver problemas de manipulação de dados de forma extremamente simples. Neste post de hoje, mostraremos, através do principais verbs do pacote, como é possível agregar e juntar dados.

Agregação

Agregação de dados é basicamente agregar observações de categorias referenciadas em uma coluna, ou mesmo, agregar diversas colunas, para realizar operações, em geral matemáticas e estatísticas, de forma que possamos resumir informações.

Os dois verbos principais para agregar e realizar operações do {dplyr}, respectivamente, são o group_by() e summarise(). Com group_by(), agrupamos a coluna inserida dentro da função. Em seguida, utilizamos a função summarise(), para escolhermos o nome da nova coluna a ser criada e a referenciamos em conjunto com a função da operação matemática ou estatística que desejamos escolhendo a coluna que queremos  aplicar o calculo.  Abaixo, utilizamos o dataset iris, que contém amostras sobre tamanhos de sépalas e pétalas de três diferentes espécies de flores como exemplos.

Neste primeiro exemplo, agrupamos as observações da coluna Species, ou seja, agrupamos as três espécies diferentes (categorias das observações), em seguida, utilizamos summarise(), escolhendo o nome da nova coluna, que será mean_petal, e calculamos a média da coluna Petal.Length com mean(). O resultado será a média de Petal.Length para cada espécie.

Nem sempre é necessário utilizarmos summarise, como no exemplo abaixo, no qual a função count() permite calcular a contagem do número de observações do data frame, porém, agrupados pelas categorias de Species.

E se quisermos aplicar algum calcular para diversas colunas? Poderíamos nomear e realizar o cálculo dentro de summarise para cada uma, entretanto, não seria viável caso tivéssemos inúmeras colunas para calcular. Para tanto, podemos utilizar a função across(), que permite aplicar a função do cálculo para cada coluna do data frame que escolhermos. Abaixo, escolhemos a coluna Sepal.Length até Petal.Width, utilizando dois pontos (:).

A função across() também permite que sejam aplicadas condições para o cálculo de colunas em conjunto com outros verbs. Vejamos abaixo a utilização de where(), que permite utilizarmos uma condição para a aplicação da função. A condição colocada em where() é de que para toda coluna numérica (is.numeric()), seja aplicado o cálculo da média. O ~ em mean, significa que toda a operação à esquerda do operador seja em função do parte direita, isto é, será aplicado a média para toda a condição satisfeita.

Juntar dados

É quase certeza que ao trabalhar com dados, iremos nos deparar com a missão de juntar data frames. Por sorte, o pacote {dplyr} também nos fornece formas de juntar diferentes data frames. Os verbs utilizados para realizar esse procedimento são conhecidos como _joins(). Cada um com um nome diferente, possuindo um comportamento único.

A ideia principal do _joins é simples: a junção do data frame só pode ocorrer caso eles tenham colunas com observações em comum, de forma que eles sejam relacionais.

Utilizaremos os datasets do pacote {nycflights13}, contendo os datasets flights e airports.

Começaremos selecionando apenas algumas colunas do dataset flights para que possamos diminuir o seu tamanho.

Nosso objetivo aqui será juntar o data frame flights_r com o data frame airports, para que possamos encontrar os voos que se relacionam com os aeroportos através das transportadores aéreas (coluna carrier).

Para juntar as colunas em comum, podemos utilizar o left_join, como o nome diz, juntaremos as observações da coluna do data frame da esquerda, para encaixar na coluna em comum com o data frame da direita. Exemplificando: inner_join(x, y...) Temos que x é o data frame da esquerda, e y é o data frame da direita. Abaixo, juntamos as colunas de flights_r em airlines.

Veja que citamos também o argumento by = "carrier" no segundo exemplo. Esse procedimento é utilizado caso seja necessário especificar o nome da coluna para que a função reconhece qual desejamos juntar.

Caso quisermos realizar o procedimento contrário de left_join(), utilizamos o right_join(). Abaixo o exemplo possui um resultado similar, a diferença é que está sendo juntado as observações da direita na da esquerda.

E caso quisermos juntar os dados em comum de ambos os data frame, sem exceção? Podemos utilizar o verb inner_join(). Abaixo, utilizando os data sets band_members e band_instrument, juntamos a coluna name, para observações em comum de ambos os data frames.

E para juntar todos os dados? Podemos utilizar o verb full_join, abaixo, juntamos todos os dados de band_members e band_instruments2, veja que desta vez especificamos a coluna para ser juntada, devido ao fato de que band_instruments2 possui a coluna de nomes diferentes.

Quer saber mais?

Veja nossos cursos de R e Python aplicados para a Análise de Dados e Economia

_____________________________________________

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Criando operações SQL com IA Generativa no R com querychat

No universo da análise de dados, a velocidade para obter respostas é um diferencial competitivo. Frequentemente, uma simples pergunta de negócio — “Qual foi nosso produto mais vendido no último trimestre na região Nordeste?” — inicia um processo que envolve abrir o RStudio, escrever código dplyr ou SQL, executar e, finalmente, obter a resposta. E se pudéssemos simplesmente perguntar isso aos nossos dados em português, diretamente no nosso dashboard Shiny?

Dashboard Financeiro com IA e Shiny Python: Análise de Dados Abertos da CVM

Este artigo apresenta um tutorial completo sobre como construir uma ferramenta de análise financeira de ponta. Utilizando Shiny for Python, demonstramos a automação da coleta de dados das Demonstrações Financeiras Padronizadas (DFP) da CVM e o tratamento dessas informações com Pandas. O ponto alto do projeto é a integração da IA Generativa do Google Gemini, que atua como um assistente de análise, interpretando os dados filtrados pelo usuário e fornecendo insights contábeis e financeiros em tempo real. O resultado é um dashboard dinâmico que democratiza a análise de dados complexos e acelera a tomada de decisão.

Econometria, ML ou IA para previsão da PMS?

Prever a Pesquisa Mensal de Serviços (PMS/IBGE) é um desafio por natureza: trata-se de uma série mensal, sujeita a volatilidade e choques que vão de fatores sazonais a mudanças estruturais no setor. Para enfrentar esse problema, realizamos um exercício de comparação entre três abordagens de modelagem: econometria tradicional (ARIMA), machine learning (XGBoost) e inteligência artificial (TimeGPT).

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.