library(loadinstall)
packages <- c("haven", "readr", "ggplot2", "ggrepel", "ggthemes",
"tidyr", "tidyverse", "sidrar", "rbcb", "readxl", "lubridate",
"sjPlot", "sjstats", "broom", "kableExtra", "modelsummary", "kableExtra", "plm", "AER", "zoo", "readr", "ggplot2", "methods", "ggthemes",
"directlabels", "ggrepel", "readxl", "haven", "dplyr", "knitr", "tidyr",
"gghighlight", "fixest", "modelsummary", "basedosdados", "DBI",
"data.table", "did", "lubridate", "stargazer", "bigrquery", "stringi", "sidrar", "viridis",
"broom", "data.table", "sp", "sf", "ggspatial", "arrow")
lapply(packages, dynamic_require)
set_billing_id("1055074884926")
bq_auth()
con <- dbConnect(
bigrquery::bigquery(),
billing = "1055074884926",
project = "My First Project"
)
#4 leonardocardoso@ufv.br
d <- basedosdados::read_sql('
SELECT nacionalidade
FROM `basedosdados.br_me_rais.microdados_vinculos`
WHERE ano BETWEEN 2020 AND 2021
AND sigla_uf = "RO"
AND SAFE_CAST(nacionalidade AS STRING) != "10"
LIMIT 1000
')
O código dos venezuelanos é o 26.
d2 <- basedosdados::read_sql('
SELECT
ano,
COUNT(*) as total_vinculos,
SUM(CASE WHEN CAST(nacionalidade AS STRING) = "26" THEN 1 ELSE 0 END) as venezuelanos
FROM `basedosdados.br_me_rais.microdados_vinculos`
WHERE ano BETWEEN 2010 AND 2024
GROUP BY ano
ORDER BY ano
')
save(d2, file="d2.Rda")
load("d2.Rda")
# Calcular a proporção
dados <- d2 %>%
mutate(proporcao_venezuelanos = (venezuelanos / total_vinculos) * 100)
# Verificar os resultados
print(dados)
## # A tibble: 15 × 4
## ano total_vinculos venezuelanos proporcao_venezuelanos
## <int64> <int64> <int64> <dbl>
## 1 2010 66747302 0 0
## 2 2011 70971125 453 0.000638
## 3 2012 73326485 598 0.000816
## 4 2013 75400510 771 0.00102
## 5 2014 76107279 952 0.00125
## 6 2015 72175102 1376 0.00191
## 7 2016 67144598 1997 0.00297
## 8 2017 65655882 4143 0.00631
## 9 2018 66214692 10704 0.0162
## 10 2019 66667417 28910 0.0434
## 11 2020 65921194 51612 0.0783
## 12 2021 70521981 87494 0.124
## 13 2022 78488470 148892 0.190
## 14 2023 81537467 221378 0.272
## 15 2024 72782072 316750 0.435
ggplot(dados, aes(x = factor(ano), y = proporcao_venezuelanos * 10)) +
geom_col(fill = "darkgreen", alpha = 0.8, width = 0.6) +
geom_text(aes(label = paste0(round(proporcao_venezuelanos * 10, 1), "‰")),
vjust = -0.5, size = 5) +
labs(
title = "Proporção de Venezuelanos na RAIS - Brasil",
subtitle = "Proporção por mil em relação ao total de vínculos formais por ano",
x = "",
y = "Proporção de Venezuelanos (‰)",
caption = "Fonte: RAIS/BasedosDados"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14),
axis.title = element_text(size = 12),
panel.grid.major.x = element_blank()
)
ggplot(dados, aes(x = factor(ano), y = venezuelanos)) +
geom_col(fill = "darkgreen", alpha = 0.8, width = 0.6) +
geom_text(aes(label = paste0(round(venezuelanos/1000, 0), "")),
vjust = -0.5, size = 5) +
labs(
title = "Total de Venezuelanos na RAIS - Brasil",
x = "",
y = "Número de Venezuelanos (milhares)",
caption = "Fonte: RAIS/BasedosDados"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14),
axis.title = element_text(size = 12),
panel.grid.major.x = element_blank()
)
## Don't know how to automatically pick scale for object of type <integer64>.
## Defaulting to continuous.
# Consulta por cidade para 2024
d3 <- basedosdados::read_sql('
SELECT
sigla_uf,
id_municipio,
COUNT(*) as total_vinculos,
SUM(CASE WHEN CAST(nacionalidade AS STRING) = "26" THEN 1 ELSE 0 END) as venezuelanos
FROM `basedosdados.br_me_rais.microdados_vinculos`
WHERE ano = 2024
GROUP BY sigla_uf, id_municipio
')
# Salvar os dados
save(d3, file = "d3.Rda")
load("d3.Rda")
library(geobr)
library(ggplot2)
library(dplyr)
library(sf)
# Carregar o shapefile dos municípios
muni <- read_municipality(code_muni = "all", year = 2020)
# Converter os códigos para o mesmo tipo (character)
muni$code_muni <- as.character(muni$code_muni)
d3$id_municipio <- as.character(d3$id_municipio)
# Fazer o merge dos dados com o shapefile
dados_mapa <- muni %>%
left_join(d3, by = c("code_muni" = "id_municipio"))
# Calcular a proporção de venezuelanos (evitando divisão por zero)
dados_mapa <- dados_mapa %>%
mutate(
proporcao_venezuelanos = ifelse(total_vinculos > 0,
(venezuelanos / total_vinculos) * 1000,
0)
)
library(ggplot2)
library(dplyr)
library(sf)
# Criar categorias para a proporção por mil com intervalos
dados_mapa <- dados_mapa %>%
mutate(
proporcao_venezuelanos = ifelse(total_vinculos > 0,
(venezuelanos / total_vinculos) * 1000,
0),
# Criar categorias com intervalos
categoria_proporcao = case_when(
proporcao_venezuelanos == 0 ~ "0",
proporcao_venezuelanos > 0 & proporcao_venezuelanos <= 0.5 ~ "0 - 0.5",
proporcao_venezuelanos > 0.5 & proporcao_venezuelanos <= 1 ~ "0.5 - 1",
proporcao_venezuelanos > 1 & proporcao_venezuelanos <= 2 ~ "1 - 2",
proporcao_venezuelanos > 2 & proporcao_venezuelanos <= 5 ~ "2 - 5",
proporcao_venezuelanos > 5 & proporcao_venezuelanos <= 10 ~ "5 - 10",
proporcao_venezuelanos > 10 & proporcao_venezuelanos <= 50 ~ "10 - 50",
proporcao_venezuelanos > 50 & proporcao_venezuelanos <= 100 ~ "50 - 100",
proporcao_venezuelanos > 100 & proporcao_venezuelanos <= 200 ~ "100 - 200",
proporcao_venezuelanos > 200 ~ ">200",
TRUE ~ "Sem dados"
),
# Ordenar as categorias para a legenda
categoria_proporcao = factor(categoria_proporcao,
levels = c("0", "0 - 0.5", "0.5 - 1", "1 - 2", "2 - 5",
"5 - 10", "10 - 50", "50 - 100", "100 - 200",
">200", "Sem dados"))
)
# Filtrar apenas municípios com venezuelanos para melhor visualização
dados_com_venezuelanos <- dados_mapa %>%
filter(venezuelanos > 0)
# Definir cores para cada categoria (escala plasma)
cores_categorias <- c(
"0" = "lightgray",
"0 - 0.5" = "#FCFDBF",
"0.5 - 1" = "#FEC98F",
"1 - 2" = "#FD9567",
"2 - 5" = "#F1605D",
"5 - 10" = "#CD4071",
"10 - 50" = "#9F2F7F",
"50 - 100" = "#721F81",
"100 - 200" = "#451077",
">200" = "#180F3E",
"Sem dados" = "white"
)
# Criar o mapa com categorias
ggplot() +
# Fundo cinza para todos os municípios
geom_sf(data = dados_mapa, fill = "lightgray", color = NA, size = 0.1) +
# Municípios com venezuelanos coloridos por categoria
geom_sf(data = dados_com_venezuelanos,
aes(fill = categoria_proporcao),
color = NA, size = 0.1) +
scale_fill_manual(
name = "Venezuelanos\n(por mil)",
values = cores_categorias,
drop = FALSE
) +
labs(
title = "Proporção de Venezuelanos por Município - 2024",
subtitle = "Venezuelanos por mil vínculos formais",
caption = "Fonte: RAIS/BasedosDados | Geobr"
) +
theme_void() +
theme(
plot.title = element_text(size = 14, hjust = 0.5),
plot.subtitle = element_text(size = 10, hjust = 0.5),
plot.caption = element_text(size = 8, hjust = 0.5),
legend.position = "right",
legend.title = element_text(size = 10),
legend.text = element_text(size = 8)
)