9.1 Pré-requisitos

O pacote tidyverse torna fácil de instalar e carregar os pacotes do tidyverse com apenas uma chamada à função:

install.packages("tidyverse")

E da mesma forma carregamos o conjunto de pacotes com:

library(tidyverse)
#> ── Attaching packages ────────────────────────────────── tidyverse 1.2.1 ──
#> ✔ ggplot2 3.0.0     ✔ purrr   0.2.5
#> ✔ tibble  1.4.2     ✔ dplyr   0.7.6
#> ✔ tidyr   0.8.1     ✔ stringr 1.3.1
#> ✔ readr   1.1.1     ✔ forcats 0.3.0
#> ── Conflicts ───────────────────────────────────── tidyverse_conflicts() ──
#> ✖ dplyr::filter() masks stats::filter()
#> ✖ dplyr::lag()    masks stats::lag()

Ao carregar o pacote tidyverse é mostrado no console os pacotes que foram carregados. À direita são mostradas as configurações e informações sobre o seu sistema operacional. Na parte inferior, há uma mensagem sobre os conflitos entre as funções da base do R (ou de outros pacotes) que tem mesmo nome que as de algum pacote do tidyverse. A função do pacote carregado mais recentemente terá prioridade de uso. No caso acima, a função filter() do dplyr sobrepôs a função filter() do pacote stats da base do R. Em situações como esta é melhor deixar explícito no seu código a chamada à função usando pacote::funcao().

Neste capítulo além do tidyverse usaremos outros pacotes que já podemos instalar:

pacotes <- c("openair", "lubridate", "scales", "rio")
easypackages::libraries(pacotes)

9.1.1 Dados

Para este capítulo utilizaremos diversos conjuntos de dados para exemplificar o uso das principais ferramentas de manipulação de dados do tidyverse.

  1. Dados climatológicos de precipitação e temperatura máxima anual de estações meteorológicas do INMET localizadas no estado do Rio Grande do Sul.
clima_file_url <- "https://github.com/lhmet/adar-ufsm/blob/master/data/clima-rs.RDS?raw=true"
# dados de exemplo
clima_rs <- import(clima_file_url, format = "RDS")
clima_rs
codigo estacao uf prec tmax
83931 Alegrete RS 1492.2 25.4
83980 Bagé RS 1299.9 24.1
83941 Bento Gonçalves RS 1683.7 23.0
83919 Bom Jesus RS 1807.3 20.3
83963 Cachoeira do Sul RS 1477.1 25.1
83942 Caxias do Sul RS 1823.0 21.8
83912 Cruz Alta RS 1630.7 24.5
83964 Encruzilhada do Sul RS 1510.8 22.5
83915 Guaporé RS 1758.7 24.7
83881 Iraí RS 1806.7 27.1
83929 Itaqui RS 1369.4 26.2
83916 Lagoa Vermelha RS 1691.1 23.0
83880 Palmeira das Missões RS 1747.8 24.0
83914 Passo Fundo RS 1803.1 23.6
83967 Porto Alegre RS 1320.2 24.8
83995 Rio Grande RS 1233.6 21.7
83936 Santa Maria RS 1616.8 24.9
83997 Santa Vitória do Palmar RS 1228.9 21.8
83957 São Gabriel RS 1313.9 25.0
83907 São Luiz Gonzaga RS 1770.9 26.1
83966 Tapes RS 1349.8 23.8
83948 Torres RS 1363.2 22.3
83927 Uruguaiana RS 1647.4 25.8
  1. Metadados das estações meteorológicas do INMET relacionadas a tabela de dados clima_rs.
metadados_url <- "https://github.com/lhmet/adar-ufsm/blob/master/data/clima_rs_metadata_61_90.rds?raw=true"
# dados de exemplo
metadados_rs <- import(metadados_url, format = "RDS")
metadados_rs
codigo lon lat alt
83931 -55.51667 -29.68333 120.91
83980 -54.10000 -31.33333 242.31
83941 -51.51667 -29.15000 640.00
83919 -50.43333 -28.66667 1047.50
83959 -53.48333 -30.51667 450.00
83963 -52.88333 -30.03333 72.71
83942 -51.20000 -29.16667 759.60
83912 -53.60000 -28.63333 472.50
83964 -52.51667 -30.53333 427.75
83915 -51.90000 -28.91667 471.51
83881 -53.23333 -27.18333 247.10
83929 -56.53333 -29.11667 76.00
83916 -51.50000 -28.21667 840.00
83885 -51.90000 -27.45000 414.17
83880 -53.43333 -27.88333 634.00
83914 -52.40000 -28.21667 684.05
83985 -52.41667 -31.78333 13.00
83983 -53.10000 -31.43333 345.00
83967 -51.16667 -30.05000 46.97
83995 -52.10000 -32.03333 2.46
83936 -53.70000 -29.70000 95.00
83997 -53.35000 -33.51667 24.01
83953 -55.60000 -30.83333 328.00
83909 -54.25000 -28.30000 284.50
83957 -54.31667 -30.33333 124.00
83907 -55.01667 -28.40000 245.11
83966 -51.58333 -30.83333 5.00
83948 -49.71667 -29.35000 4.66
83927 -57.08333 -29.75000 62.31
83918 -50.70000 -28.55000 954.60
  1. Um exemplo minimalista de dados referentes a séries temporais de precipitação anual observada em estações meteorológicas.
prec_anual <- data.frame(
  site = c(
    "A001", "A001", "A002", "A002", "A002", "A003", "A803", "A803"
  ),
  ano = c(2000:2001, 2000:2002, 2004, 2005, 2006),
  prec = c(1800, 1400, 1750, 1470, 1630, 1300, 1950, 1100)
)
prec_anual
site ano prec
A001 2000 1800
A001 2001 1400
A002 2000 1750
A002 2001 1470
A002 2002 1630
A003 2004 1300
A803 2005 1950
A803 2006 1100