O dplyr é um pacote essencial para a transformação de dados no R, oferecendo uma combinação elegante de simplicidade e eficiência.
As principais funções do dplyr são:
select(): seleciona colunas
arrange(): ordena a base
filter(): filtra linhas
mutate(): cria/modifica colunas
group_by(): agrupa a base
summarise(): sumariza a base
A utilização é facilitada pelo operador %>% (pipe).
As principais vantagens de usar o dplyr em vez das funções básicas do R são:
🔄 Torna a manipulação de dados uma tarefa muito mais simples.
😀 O código se torna mais intuitivo e fácil de ler.
⚡ O dplyr usa C e C++ em grande parte de suas funções, o que geralmente resulta em um código mais rápido.
💾 É possível trabalhar com diferentes fontes de dados, como bancos de dados relacionais (SQL) e data.table.
select()
library(dplyr)library(titanic)head(titanic_train)
PassengerId Survived Pclass
1 1 0 3
2 2 1 1
3 3 1 3
4 4 1 1
5 5 0 3
6 6 0 3
Name Sex Age SibSp Parch
1 Braund, Mr. Owen Harris male 22 1 0
2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1 0
3 Heikkinen, Miss. Laina female 26 0 0
4 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0
5 Allen, Mr. William Henry male 35 0 0
6 Moran, Mr. James male NA 0 0
Ticket Fare Cabin Embarked
1 A/5 21171 7.2500 S
2 PC 17599 71.2833 C85 C
3 STON/O2. 3101282 7.9250 S
4 113803 53.1000 C123 S
5 373450 8.0500 S
6 330877 8.4583 Q
# Selecionar as colunas "Survived" e "Sex" do dataframe t1 <- titanic_train %>%select(Survived, Sex)# Selecionar todas as colunas que começam com "Nam" do dataframe t2 <- titanic_train %>%select(starts_with("Nam"))# Selecionar todas as colunas que terminam com "ved" do dataframe t3 <- titanic_train %>%select(ends_with("ved"))# Selecionar todas as colunas que contêm "Age" no nome do dataframe t4 <- titanic_train %>%select(contains("Age"))# Excluir as colunas Name e Sext5 <- titanic_train %>%select(-Name, -Sex)# Renomear a coluna "Name" para "nome_completo" do dataframe dft6 <- titanic_train %>%select(nome_completo = Name)# Selecionar todas as colunas do dataframe entre as colunas "Sex" e "Embarked"t7 <- titanic_train %>%select(Sex:Embarked)
arrange()
# Ordenar o dataframe pela coluna "Age" em ordem crescentet8 <- titanic_train %>%arrange(Age)# Ordenar o dataframe pela coluna "Fare" em ordem decrescentet9 <- titanic_train %>%arrange(desc(Fare))# Ordenar o dataframe primeiro pela coluna "Age" em ordem crescente e, em seguida, pela coluna "Fare" em ordem crescentet10 <- titanic_train %>%arrange(Age, Fare)# Ordenar o dataframe pela coluna "Namee" em ordem alfabética ignorando letras maiúsculas/minúsculaslibrary(stringr)t12 <- titanic_train %>%arrange(str_to_lower(Name))
filter()
# Filtrar o dataframe para mostrar apenas linhas onde a coluna "Age" seja maior que 18t13 <- titanic_train %>%filter(Age >18)# Filtrar o dataframe para mostrar apenas linhas onde a coluna "Age" seja maior que 18 e a coluna "Fare" seja menor que 100t14 <- titanic_train %>%filter(Age >18& Fare <100)# Filtrar o dataframe para mostrar apenas linhas onde a coluna "Embaked" seja "C" ou "Q"t15 <- titanic_train %>%filter(Embarked =="C"| Embarked =="Q")# # Filtrar o dataframe df para mostrar apenas linhas onde a coluna "nome" contenha a palavra "João"t16 <- titanic_train %>%filter(grepl("Maria", Name))
mutate()
# Criar uma nova coluna "Age2" no dataframe com o dobro dos valores da coluna "Age"t17 <- titanic_train %>%mutate(Age2 = Age *2)# Criar uma nova coluna "categoria" no dataframe, com base na coluna "Age"t18 <- titanic_train %>%mutate(categoria =ifelse(Age <18, "Menor de idade", "Maior de idade"))# Criar uma nova coluna "tarifa_individual" no dataframe com base no numero de passageirost19 <- titanic_train %>%mutate(tarifa_individual = Fare/(Parch+SibSp+1))
group_by() e summarise()
# Agrupar o dataframe pela coluna "Sex" e calcular a frequencia de cada categoriatitanic_train %>%group_by(Sex) %>%summarise(freq =n())
# A tibble: 2 × 2
Sex freq
<chr> <int>
1 female 314
2 male 577
# Agrupar o dataframe pela coluna "Sex" e calcular a soma das tarifas pagas por cada grupo titanic_train %>%group_by(Sex) %>%summarise(soma =sum(Fare))
# A tibble: 2 × 2
Sex soma
<chr> <dbl>
1 female 13967.
2 male 14727.
# Agrupar o dataframe pela coluna "Sex" e calcular a media das idiades de caga grupotitanic_train %>%group_by(Sex) %>%summarise(idade_media =mean(Age, na.rm = T))
# A tibble: 2 × 2
Sex idade_media
<chr> <dbl>
1 female 27.9
2 male 30.7
# Calcular o mínimo e máximo da coluna "Fare" no dataframetitanic_train %>%summarise(min_tarifa =min(Fare), max_tarifa =max(Fare))
min_tarifa max_tarifa
1 0 512.3292
# Calcular o mínimo e máximo da coluna "Fare" no dataframe agrupado pela coluna "Survived"titanic_train %>%group_by(Survived) %>%summarise(min_tarifa =min(Fare), max_tarifa =max(Fare))
# Pegando as colunas Sex e Survived e Age, filtrando apenas as pessoas com menos de 5 anos, transformando a idade para dias, agrupando por Sex e Survived e calculando a idade mediana de cada grupotitanic_train %>%select(Sex, Survived, Age) %>%filter(Age <5) %>%mutate(idade_dias = Age *365) %>%group_by(Sex, Survived) %>%summarise(mediana_idade =median(idade_dias, na.rm = T))
# A tibble: 4 × 3
# Groups: Sex [2]
Sex Survived mediana_idade
<chr> <int> <dbl>
1 female 0 730
2 female 1 912.
3 male 0 730
4 male 1 365
Gerando gráficos ggplot de forma simples
O pacote “esquisse” é um pacote do R que oferece uma interface gráfica interativa para a criação de gráficos usando a gramática de gráficos do pacote “ggplot2”. Ele foi desenvolvido para facilitar a criação e personalização de gráficos de maneira intuitiva e visual.
Com o pacote “esquisse”, você pode criar uma variedade de tipos de gráficos, como gráficos de barras, gráficos de dispersão, gráficos de linhas e muito mais. Ele fornece uma interface de usuário amigável, onde você pode interagir com o gráfico em tempo real, ajustando parâmetros, selecionando variáveis e alterando a estética visual.
Algumas das principais funcionalidades do pacote “esquisse” incluem:
✨ Interface gráfica interativa: permite criar e personalizar gráficos de forma visual e intuitiva.
🔄 Pré-visualização em tempo real: à medida que você faz alterações nas configurações do gráfico, a visualização é atualizada instantaneamente, permitindo uma rápida iteração.
🎨 Opções de personalização: você pode ajustar várias propriedades do gráfico, como cores, títulos, rótulos, escalas e muito mais.
🔍 Seleção de variáveis: é possível escolher as variáveis do seu conjunto de dados para mapear em diferentes elementos do gráfico.
🔗 Compatibilidade com ggplot2: o pacote “esquisse” gera código ggplot2 por trás dos panos, o que significa que você pode salvar o código gerado e modificá-lo posteriormente.
Os gráficos abaixo foram feitos pela interface do esquisse, que fornece o código escrito em linguagem R:
library(dplyr)library(ggplot2)library(hrbrthemes)t10 %>%mutate(Survived =as.factor(Survived)) %>%filter(!is.na(Age)) %>%filter(!(Embarked %in%"")) %>%ggplot() +aes(x ="", y = Age, fill = Survived) +geom_boxplot() +scale_fill_brewer(palette ="Set1", direction =1) +labs(x =" ", y ="Idade (anos)", fill ="Sobrevivência") +theme_minimal() +facet_wrap(vars(Sex))
library(dplyr)library(ggplot2)library(hrbrthemes)t10 %>%mutate(Survived =as.factor(Survived)) %>%mutate(Sex =as.factor(Sex)) %>%filter(!(Embarked %in%"")) %>%ggplot() +aes(x = Sex, fill = Survived) +geom_bar(position ="fill") +scale_fill_brewer(palette ="Set1", direction =1) +labs(y ="Frequência relativa", fill ="Sobrevivência") +theme_minimal() +facet_wrap(vars(Pclass))
O pacote corrplot
library(corrplot)M <-cor(iris[,-5])# Gera um gráfico de matriz de correlação usando a matriz "M" e o método padrão de plotagemcorrplot(M)
# Gera um gráfico de matriz de correlação exibindo os valores numéricos nas célulascorrplot(M, method ='number')
# Gera um gráfico de matriz de correlação com cores representando a magnitude da correlação e ordem alfabética das variáveiscorrplot(M, method ='color', order ='alphabet')
# Gera um gráfico de matriz de correlação com ordem das variáveis definida pela estatística de eficiência de agrupamento (AOE)corrplot(M, order ='AOE')
# Gera um gráfico de matriz de correlação com sombra representando a magnitude da correlação, ordem definida por AOE e diagonal ocultacorrplot(M, method ='shade', order ='AOE', diag =FALSE)
# Gera um gráfico de matriz de correlação com exibição quadrada da magnitude da correlação, apenas parte inferior exibida e diagonal ocultacorrplot(M, method ='square', type ='lower', diag =FALSE)
# Gera um gráfico de matriz de correlação mista com sombra na parte inferior e gráficos de setores na parte superior, ordem definida por hclustcorrplot.mixed(M, lower ='shade', upper ='pie')
# Gera um gráfico de matriz de correlação, coeficientes em preto, texto na diagonal e legenda à direita sem exibição da corcorrplot(M, addCoef.col ='black', tl.pos ='d', cl.pos ='n', col =COL2('PiYG'))