Com o pacote GetBCBData é possível baixar automaticamente dentro do R diversas séries temporais coletadas pelo Banco Central do Brasil. Neste post mostro como fiz para baixar dados da cotação do dólar e dos valores nominais do salário mínimo brasileiro em reais, desde a criação do Plano Real até a publicação deste texto.

O primeiro passo é carregar os pacotes necessários. Além do já citado GetBCBData, também vou carregar os pacotes tidyverse e lubridate, que facilitarão a manipulação dos dados e a criação do gráfico que desejo.

library(GetBCBData)
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(lubridate)

O passo seguinte é visitar a página https://www3.bcb.gov.br/sgspub/. Nela é possível encontrar as ids das séries temporais que desejamos. Ao procurar por “dolar” e “salário mínimo”, notamos que as ids procuradas são 1 e 1619. Basta informar isso à função gbcbd_get_series, junto com o intervalo de datas desejado, para baixar os dados que desejamos:

dolar <- gbcbd_get_series(id = 1, 
                          first.date = "1994-07-01",
                          last.date = Sys.Date())
## 
## Fetching id = 1 [1] from BCB-SGS with cache 
## 	 Found 7460 observations
sm <- gbcbd_get_series(id = 1619, 
                       first.date = "1994-07-01",
                       last.date = Sys.Date())
## 
## Fetching id = 1619 [1619] from BCB-SGS with cache 
## 	 Found 357 observations

Com os dados disponíveis, é preciso prepará-los para análise e armazená-los no objeto dados. Em particular, 4 passos foram tomados:

  1. Apenas as colunas ref.date (datas das observações) e value (com os valores observados) foram mantidas
  2. Os conjuntos de dados dolar e sm foram juntados a partir da coluna ref.date
  3. Como os valores do dólar foram coletados diariamente, mas os do salário mínimo foram coletados a cada mês, é necessário usar a função fill para completar os dias que faltam para as observações referentes ao salário mínimo
  4. Por fim, criei a coluna sm_dolarizado, que calcula o valor do salário mínimo em dólares para cada dia do intervalo e tranformei a coluna ref.date em data, para facilitar o trabalho com os intervalos de tempo

Juntando tudo disso, temos o código abaixo:

dados <- 
  dolar |> 
  select(ref.date, dolar = value) |>  
  left_join(select(sm, ref.date, sm = value), by = "ref.date") |> 
  fill(sm, .direction = "down") |> 
  mutate(sm_dolarizado = sm/dolar) |> 
  mutate(ref.date = ymd(ref.date))

Agora é só plotar e analisar o resultado:

ggplot(dados, aes(x = ref.date, y = sm_dolarizado)) +
  geom_line() +
  labs(x = "Data", y = "Salário Mínimo em US$", caption = "marcusnunes.me") +
  scale_x_date(
    breaks = seq.Date(from = ymd("1995-01-01"),
                      to = Sys.Date(),
                      by = "4 year"),
    date_labels = "%Y"
    ) +
  scale_y_continuous(breaks = seq(50, 350, 50), minor_breaks = NULL) +
  theme_bw()

É possível ver que, a partir de 2005, houve uma forte tendência de aumento do valor do salário mínimo em dólar. Após 10 anos praticamente estável, variando entre US$50 e US$115, houve ganho real do valor do salário mínimo em dólar entre 2005 e 2012. Até 2015 esse valor permaneceu razoavelmente estável, até apresentar tendência de queda e maior volatilidade até agosto de 2022.