Manipulação de Dados com o Pacote dplyr

Repositório de exemplo: https://github.com/jcarlossc/dplyr-functions-r

O pacote dplyr é uma das ferramentas mais poderosas e populares para manipulação e transformação de dados na linguagem R. Ele faz parte do ecossistema tidyverse e oferece uma sintaxe simples, expressiva e eficiente para trabalhar com data frames (ou tibbles).

Nesta postagem, você vai aprender os principais conceitos e funções do dplyr.


O que é o dplyr?

O dplyr foi criado para simplificar o trabalho com conjuntos de dados tabulares. Ele permite selecionar, filtrar, ordenar, agrupar e resumir informações de forma clara e performance otimizada.

Para começar, basta instalar e carregar o pacote:


# Instalar.
install.packages("dplyr")
# Carregar
library(dplyr)


1. As seis funções básicas.

Função Descrição Exemplo
select() Seleciona colunas select(dados, nome, idade)
filter() Filtra linhas com base em condições filter(dados, idade > 30)
mutate() Cria ou modifica colunas mutate(abono = salario * 0.10)
summarise() Resume os dados summarise(dados, media = mean(idade))
arrange() Ordena linhas arrange(df, desc(idade))
group_by() Agrupa dados para operações de resumo group_by(df, sexo)

2. Funções de junção (joins)

Função Descrição Exemplo
inner_join() Retém apenas correspondências inner_join(x, y, by = "coluna")
left_join() Retém todas de x, e y se corresponder left_join(x, y, by = "coluna")
right_join() Retém todas de y, e x se corresponder. right_join(x, y, by = "coluna")
full_join() Retém todas de ambos. full_join(x, y, by = "coluna")
semi_join() Retém apenas linhas de x e em y semi_join(x, y, by = "coluna")
anti_join() Retém apenas linhas de x sem correspondência em y anti_join(x, y, by = "coluna")

3. Funções de combinação e ligação de data frames

Função Descrição Exemplo
bind_rows() Une data frames empilhando bind_rows(df1, df2)
bind_cols() Une data frames lado a lado (colunas) bind_cols(df1, df2)
union() Une data frames removendo duplicatas union(df1, df2)
intersect() Retorna linhas comuns intersect(df1, df2)
setdiff() Retorna linhas de df1 que não estão em df2 setdiff(df1, df2)

4. Funções auxiliares para colunas

Função Descrição Exemplo
rename() Renomeia colunas rename(dados, nova = velha)
rename_with() Renomeia várias colunas com função rename_with(dados, toupper)
relocate() Reorganiza ordem das colunas relocate(dados, coluna, .before = outra)
pull() Extrai uma coluna como vetor pull(dados, idade)
across() Aplica função a várias colunas summarise(across(where(is.numeric), mean)

5. Funções de contagem e amostragem

Função Descrição Exemplo
count() Conta observações por grupo count(dados, coluna)
add_count() Adiciona coluna de contagem add_count(dados, coluna)
n() Retorna tamanho do grupo(summarise) summarise(dados, n())
n_distinct() Conta número de valores distintos n_distinct(dados_01$departamento)
sample_n() Amostra n linhas aleatórias sample_n(dados, 3)
sample_frac() Amostra uma fração de linhas sample_frac(dados, 0.3)

6. Manipulação condicional e de valores

Função Descrição Exemplo
if_else() Condicional vetorizada mutate(dados, status = if_else(idade > 18, "adulto", "menor"))
case_when() Múltiplas condições mutate(df, faixa = case_when(idade < 18 ~ "jovem", idade < 60 ~ "adulto", TRUE ~ "idoso"))
coalesce() Substitui valores NA por outro coalesce(coluna, 0)
between() Verifica se valores estão entre dois limites filter(df, between(idade, 18, 30))

7. Agrupamento avançado

Função Descrição Exemplo
ungroup() Remove agrupamento Exemplo no Repositório
reframe() Retorna data frame dentro de summarise() Exemplo no Repositório
group_map() Aplica função em cada grupo e retorna lista Exemplo no Repositório
group_modify() Retorna data frame combinando resultados Exemplo no Repositório
group_split() Divide data frame em lista de grupos Exemplo no Repositório
group_keys() Retorna chaves únicas dos gruposs Exemplo no Repositório
group_indices() Retorna índice numérico de grupos Exemplo no Repositório

8. Predicados (para seleção com select() e across())

Função Descrição Exemplo
starts_with() Colunas que começam com... select(dados, starts_with("dep"))
ends_with() Colunas que terminam com... Eselect(dados, ends_with("ade"))
contains() Colunas que contêm... select(dados, contains("ario"))
matches("regex") Colunas com expressão regular select(dados, matches("e$"))
where(is.numeric) Colunas numéricas select(dados, where(is.numeric))
everything() Todas as colunas select(dados, departamento, everything())

9. Outras utilidades

Função Descrição Exemplo
distinct() Remove linhas duplicadas distinct(dados)
slice() Seleciona linhas por posição slice(dados, c(1,2,3))
slice_head() Seleciona linhas no início slice_head(dados, n = 3)
slice_tail() Seleciona linhas do fim slice_tail(dados, n = 3)
slice_sample() Seleção aleatória slice_sample(dados, n = 5)
row_number() Retorna número da linha mutate(dados, indice = row_number())
lead() Acessa próxima linha mutate(dados, proximo_salario = lead(salario))
lag() Acessa próxima linha mutate(dados, proximo_salario = lag(salario))

Conclusão

O dplyr é, sem dúvida, uma das ferramentas mais poderosas e indispensáveis do ecossistema tidyverse para quem trabalha com análise e manipulação de dados em R. Com sua sintaxe intuitiva e expressiva, ele transforma tarefas repetitivas e complexas em operações simples e legíveis, facilitando o fluxo de trabalho de cientistas de dados, analistas e estudantes. Muito obrigado e até a próxima.

Repositório de exemplo: https://github.com/jcarlossc/dplyr-functions-r

Comentários

Postagens mais visitadas deste blog