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.
- 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 |
- 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 |
- 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 |