Aula 3 - Manipulando dataframes e gráficos

Lucas C. L. do Carmo

2020 - 10 - 05

Anteriormente…

  • Como manipular objetos
  • Como adicionar colunas novas a um dataframe
  • Como escrever funções e por que usá-las
  • Como usar scripts

Hoje…

  • Introdução ao tidyverse
    • readr::
    • tibble::
    • tidyr::
    • dplyr::
    • ggplot2::
    • outros no futuro
  • Como manipular dados de uma tabela
    • Como organizar os variáveis
    • Formatos de dados wide e long
    • Gráficos

Componentes do tidyverse

Importando Dados com readr::

Importando dados para o ambiente de trabalho

Agora que sabemos o que funções são e mais ou menos como elas funcionam, podemos usá-las em nosso benefício.

Podemos importar dados do Excel1, de arquivos de texto armazenados no computador, Google Drive2, e direto da internet ou fazendo conexões com bancos de dados usando pacotes como DBI::

Importando dados do computador

Para importar dados do computador recomenda-se que estejam no formato .csv ou .txt ou algum outro tipo de formato de texto.

Para importar os dados usamos as funções da família read_*() ou seja:

install.packages("readr") # ou melhor install.packages("tidyverse")

library(readr) # ou melhor library(tidyverse)

read_csv(file = "Pasta/para/Arquivo.csv") # aspas importam

Important

Não se esqueça de atribuir o resultado desta função a um objeto com um nome significativo.

calibracao_HPLC <- read_csv("Pasta/para/Arquivo.csv")

read_*()

Existem outras funções da família read_*(), para ler arquivos de texto cuja separação entre colunas não é , e sim ; (muito comum em países onde o ponto decimal é a vírgula) e arquivos onde a separação são espaços em branco ou outro tipo de caractere. Estas são:

  • read_csv(): serve para ler arquivos com , como separador de colunas e . como decimal
  • read_csv2(): arquivos com ; como separador e , como decimal
  • read_delim(): TAB, ou outros como separador de colunas
  1. Como exercício digite ?read_*() no console e leia a documentação desta família de funções.
  2. Pesquise quais os argumentos são importantes para uso da função.

tidyr::

O tidyr é um pacote que serve para organizar as tabelas em um formato específico: o formato tidy.

O formato tidy é um formato de dados usado em bancos de dados e é a melhor forma de organizar os dados para se fazer operações estatísticas no R e construir gráficos.

Wide data e long data

tbl <- data.frame(
  "Pais" = c("Brasil", "Argentina"),
  "1999" = c(0.5, 0.69),
  "2000" = c(0.6, 0.98),
  "2001" = c(0.71, 0.96)
)
gt(tbl)
Pais X1999 X2000 X2001
Brasil 0.50 0.60 0.71
Argentina 0.69 0.98 0.96

Transformando a tabela para formato long

gt(tbl)
Pais X1999 X2000 X2001
Brasil 0.50 0.60 0.71
Argentina 0.69 0.98 0.96
tbl_long <- pivot_longer(
  data = tbl,          # quais os dados vou usar
  cols = -Pais,        # quais colunas quero transformar
  names_to = "Ano",    # nomes das colunas vão para...
  values_to = "Valor") # valores vão para coluna ...

gt(tbl_long)
Pais Ano Valor
Brasil X1999 0.50
Brasil X2000 0.60
Brasil X2001 0.71
Argentina X1999 0.69
Argentina X2000 0.98
Argentina X2001 0.96

E agora podemos usar os dados para fazer gráficos

library(ggplot2)

ggplot(tbl_long, aes(x = Ano, y = Valor)) + geom_point()

O que é ggplot(tbl_long ...) ??

ggplot

Gramática de gráficos

Os elementos dos gráficos são:

Elementos Função o que faz:
Dados ggplot() Inicializa o gráfico
Estéticas aes(x = , y = ) Mapeia variáveis aos elementros gráficos
Geoms, stats geom_point() Desenha os elementos (pontos, linhas)
Rótulos labs() Muda os rótulos dos eixos e título
Coordenadas coord_trans() Muda coordenadas do gráfico
Escalas scale_color_*() Modifica os elementos gráficos
Facetas facet_wrap() Separa os dados em subgráficos
Temas theme_bw() Modifica os elementos dos eixos e outros

Camadas

Camadas

Camadas

Camadas

Camadas

Camadas

Camadas

Camadas

Camadas

Nosso primeiro gráfico

Vamos usar o dataset mpg para fazer este gráfico:

library(tidyverse)
gt(head(mpg))
manufacturer model displ year cyl trans drv cty hwy fl class
audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
audi a4 2.0 2008 4 manual(m6) f 20 31 p compact
audi a4 2.0 2008 4 auto(av) f 21 30 p compact
audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
audi a4 2.8 1999 6 manual(m5) f 18 26 p compact

Inicializando

plot <- ggplot(mpg)

Mapeando variáveis

plot <- plot + 
  aes(x = displ,
      y = hwy,
      col = cyl)

Adicionando os geoms

plot <- plot + 
  aes(x = displ,
      y = hwy,
      col = cyl) +
  geom_point()

Adicionando rótulos

plot <- plot + 
  aes(x = displ,
      y = hwy,
      col = cyl) +
  geom_point() +
  labs(title = "Título")

Mudando coordenadas

plot <- plot + 
  aes(x = displ,
      y = hwy,
      col = cyl) +
  geom_point() +
  labs(title = "Título") +
  coord_polar()

Modificando as escalas

plot <- plot + 
  aes(x = displ,
      y = hwy,
      col = cyl) +
  geom_point() +
  labs(title = "Título") +
  coord_polar() +
  scale_color_viridis_c() 

Subdividindo gráfico

plot <- plot + 
  aes(x = displ,
      y = hwy,
      col = cyl) +
  geom_point() +
  labs(title = "Título") +
  coord_polar() +
  scale_color_viridis_c() +
  facet_wrap(~cyl)

Modificando o tema

plot <- plot + 
  aes(x = displ,
      y = hwy,
      col = cyl) +
  geom_point() +
  labs(title = "Título") +
  coord_polar() +
  scale_color_viridis_c() +
  facet_wrap(~cyl) +
  theme_minimal()

plot + theme_minimal(base_size = 16)

FIM