Introdução Link para o cabeçalho

A fim de verificar o impacto da atual pandemia de COVID-19 na aviação brasileira, baixei alguns dos Dados Estatísticos da ANAC para comparar o fluxo de passageiros aéreos entre 2019 e 2020.

Obtenção dos Dados Link para o cabeçalho

Embora eu utilize apenas dois anos na análise, criei um código capaz de baixar informações de todos os anos disponíveis no site da ANAC. Basta editar os valores do objeto anos para fazer isso.

base <- "https://www.anac.gov.br/assuntos/dados-e-estatisticas/dados-estatisticos/arquivos/resumo_anual_"

anos <- 2019:2020

for (j in anos){
  download.file(url = paste0(base, j, ".csv"),
                destfile = paste0("dados/resumo_anual_", j, ".csv"))
}

Preparação dos Dados Link para o cabeçalho

Após os dados baixados, eles devem ser lidos dentro do R. Como há algumas operações a serem feitas em cada conjunto de dados, eu criei a função preparacao para simplificar esse processo. Essa função lê os arquivos csv e ajusta o nome das suas colunas.

# preparacao dos dados

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(janitor)
## 
## Attaching package: 'janitor'
## 
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
preparacao <- function(arquivo){
  
  # leitura
  dados <- read.csv(file = arquivo,
                    sep = ";",
                    fileEncoding="latin1",
                    dec = ",")
  
  # nomes das colunas
  dados <- clean_names(dados)
  
  return(dados)
}

resumo_anual_2019 <- preparacao("data/resumo_anual_2019.csv")
# retirar dezembro
resumo_anual_2019 <-
  resumo_anual_2019 %>%
  filter(mes != 12)

resumo_anual_2020 <- preparacao("data/resumo_anual_2020.csv")

dados <- 
  rbind(resumo_anual_2019, resumo_anual_2020) %>%
  mutate(passageiros = passageiros_pagos + passageiros_gratis) %>%
  mutate(ano = as.factor(ano)) %>%
  select(ano, mes, passageiros) %>%
  group_by(ano, mes) %>%
  summarise(passageiros = sum(passageiros, na.rm = TRUE))
## `summarise()` has grouped output by 'ano'. You can override using the `.groups`
## argument.

Visualização Link para o cabeçalho

Com os dados lidos e preparados, é trivial fazer a visualização.

ggplot(dados, aes(x = mes, y = passageiros, colour = ano)) +
  geom_line() +
  labs(x = "Mês", y = "Passageiros", colour = "Ano") +
  scale_x_continuous(breaks = 1:12,
                     labels = c("Jan", "Fev", "Mar", "Abr", "Mai", "Jun",
                                "Jul", "Ago", "Set", "Out", "Nov", "Dez"),
                     minor_breaks = NULL) +
  scale_y_continuous(limits = c(0, 1.2e7), 
                     labels = scales::comma_format()) +
  theme_bw() +
  scale_colour_viridis_d()

Os códigos usados nesse post podem ser encontrados no github (me segue lá).