# install.packages("censobr")
library(tidyverse)
library(censobr)
library(geobr)
library(scales)
Dados do Censo Brasileiro
Tutorial Transformação Digital nº 7
Neste tutorial exploramos o pacote censobr que permite o acesso a dados do Censo diretamente no R.
Contato: transformacao.digital@fjp.mg.gov.br
1 Introdução
O pacote censobr no R é uma ferramenta para acessar e analisar dados do Censo brasileiro. Este tutorial irá guiá-lo através das funcionalidades básicas de extração dos dados.
1.1 Configuração Inicial
Para começar, instale e carregue os pacotes necessários no RStudio
1.2 Explorando o Pacote censobr
censobr é um pacote do R para baixar dados do Censo Populacional do Brasil. Ele é construído sobre a plataforma Arrow, permitindo trabalhar com dados do censo maiores que a memória utilizando funções familiares do dplyr.
O pacote atualmente inclui seis funções principais para baixar e ler dados do censo:
Além das funções de auxílio para as bases de dados:
Obs.: O pacote ainda está em desenvolvimento e foi construído pelo IPEA, dados mais atualizados são adiconados periodicamente ver (Pereira e Barbosa 2023).
1.3 Exemplos Práticos
Vamos explorar um exemplo prático sobre a renda per capita de Uberlândia por setor censitário usando read_tracts() para coletar variáveis específicas:
1.3.1 Criando a layer básica
Carregue e filtre os dados geográficos do município de Uberlândia para o ano de 2010:
muni_bh <- geobr::read_municipality(code_muni = 'MG',
year = 2010,
showProgress = FALSE) |>
filter(name_muni == "Uberlândia")Using year 2010
read_municipalityobtém dados geograficos dos municípios de Minas Gerais.O filtro seleciona apenas Uberlândia.
2. Carregamento dos Dados dos Setores Censitários
Agora, carregue os dados detalhados dos setores censitários:
tracts_sf <- geobr::read_census_tract(code_tract = "MG",
simplified = FALSE,
year = 2010,
showProgress = FALSE)Using year 2010
tracts_sf <- filter(tracts_sf, name_muni == "Uberlândia")simplified = FALSEmantém todos os detalhes geográficos.
- Visualização dos Dados: Crie um mapa dos setores censitários:
ggplot() +
geom_sf(data=tracts_sf, fill = 'gray90', color='gray60') +
theme_void()ggplot()inicia a criação do gráfico.geom_sfadiciona os setores censitários ao gráfico.fillecolordefinem as cores das áreas e bordas.theme_void()remove elementos desnecessários para focar no mapa.
2 Caculando Renda Per Capta
2.1 Download dos Dados dos Setores Censitários:
Os dados agregados no nível do setor censitário são divididos em diferentes conjuntos de dados, e alguns deles estão espalhados em vários arquivos. Por uma questão de conveniência, reunimos todos os arquivos em 8 conjuntos de dados diferentes:
Basico, Entorno, Domicilio, Pessoa, Responsavel, PessoaRenda, DomicilioRenda, ResponsavelRenda.
- Download dos Dados dos Setores Censitários:
tract_basico <- read_tracts(year = 2010,
dataset = "Basico",
showProgress = FALSE)Reading data cached locally.
names(tract_basico)[c(1:20,01:20)] [1] "code_tract" "code_weighting" "code_muni"
[4] "name_muni" "code_state" "abbrev_state"
[7] "name_state" "code_region" "name_region"
[10] "code_meso" "name_meso" "code_micro"
[13] "name_micro" "code_metro" "name_metro"
[16] "name_neighborhood" "code_neighborhood" "Basico_V1005"
[19] "Cod_municipio" "code_district" "code_tract"
[22] "code_weighting" "code_muni" "name_muni"
[25] "code_state" "abbrev_state" "name_state"
[28] "code_region" "name_region" "code_meso"
[31] "name_meso" "code_micro" "name_micro"
[34] "code_metro" "name_metro" "name_neighborhood"
[37] "code_neighborhood" "Basico_V1005" "Cod_municipio"
[40] "code_district"
carrega dados básicos dos setores censitários para 2010 que são informações de codigo e nome do município.
read_tracts(year = 2010, dataset = "DomicilioRenda", showProgress = FALSE)por sua vez carrega dados de renda dos domicílios dos setores censitários para 2010.showProgress = FALSEdesativa a exibição de progresso.
tract_income <- read_tracts(year = 2010,
dataset = "DomicilioRenda",
showProgress = FALSE)Reading data cached locally.
names(tract_income)[c(1:15,301:302)] [1] "code_tract" "code_weighting" "code_muni" "code_state"
[5] "abbrev_state" "name_state" "code_region" "name_region"
[9] "V1005" "V001" "V002" "V003"
[13] "V004" "V005" "V006" NA
[17] NA
- Seleção das variáveis :
tract_basico %>% select('code_tract','V002')seleciona as colunascode_tract(código do setor censitário) eV002(população do setor) do dataset básico.tract_income %>% select('code_tract','V003')seleciona as colunascode_tracteV003(renda total do setor) do dataset de renda.
# selecionar variáveis
tract_basico <- tract_basico %>% select('code_tract','V002') # V002: população do setor
tract_income <- tract_income %>% select('code_tract','V003') # V003: renda total do setor- Junção dos Dados:
left_join(tract_basico, tract_income)combina os dois datasets baseando-se nocode_tract.|> collect()é utilizado para coletar e consolidar os resultados da junção.
tracts_df <- left_join(tract_basico, tract_income) %>% collect()Cálculo da Renda Per Capita:
mutate(renda_pc = V003 / V002)adiciona uma nova colunarenda_pc, calculando a renda per capita do setor (renda total dividida pela população).
tracts_df <- tracts_df |> mutate(renda_pc = V003 / V002)Junção com Dados Geográficos:
bh_tracts <- left_join(tracts_sf, tracts_df, by = 'code_tract')left_join(tracts_sf, tracts_df, by = 'code_tract')junta o dataframetracts_sf(dados geográficos dos setores censitários de Uberlândia) comtracts_df(dados socioeconômicos), baseando-se no código do setor censitário.
2.2 Criando um gráfico
Criando um mapa para visualizar a renda per capita por setor censitário em Uberlândia no ano de 2010. O código usa ggplot2 para criar o gráfico.
- `ggplot()` inicializa o gráfico.
- `geom_sf(data = bh_tracts, aes(fill = renda_pc), color=NA)` adiciona os setores censitários de Uberlândia ao gráfico, com a cor das áreas determinada pela renda per capita (`renda_pc`).
- `geom_sf(data = muni_bh, color='gray10', fill=NA)` desenha as fronteiras do município em uma cor escura (`gray10`) sem preenchimento interno.
# gráfico
p <- ggplot() +
geom_sf(data = bh_tracts, aes(fill = renda_pc), color=NA) +
geom_sf(data = muni_bh, color='gray10', fill=NA) +
labs(subtitle = 'Renda per capita.\nUberlândia, 2010') +
scale_fill_viridis_c(
name = "Renda per\ncapita (R$)",
labels = label_number(big.mark = ".", decimal.mark = ",", accuracy = 0.01),
option = 'turbo',
breaks = c(0, 200, 400, 600, 800, 1000, 1500, 2000, 3000, 5000, 10000),
trans = "pseudo_log",
na.value = "gray90"
) +
theme_void()
p- Adição de Rótulos e Ajustes Visuais:
labs(subtitle = 'Renda per capita.\nUberlândia, 2010')adiciona um subtítulo ao gráfico.scale_fill_viridis_c(...):- Aplica uma escala de cores ‘viridis’ (aqui, opção ‘turbo’) para representar a renda per capita.
labels = scales::number_format()formata os números para melhor legibilidade.breaks = c(0, 500, 1e3, 5e3, 1e4, 2e4)define os pontos em que as cores mudarão no mapa.trans = "pseudo_log"aplica uma transformação logarítmica para escalonar os dados de renda.na.value = "gray90"define a cor para valores ausentes como um cinza claro.
theme_void()remove elementos desnecessários do gráfico, focando nos dados.
2.3 Conclusão
Neste tutorial, você aprendeu a acessar, combinar e visualizar dados socioeconômicos e geográficos usando o pacote censobr no R. Este exemplo demonstrou como calcular e visualizar a renda per capita em Uberlândia usando dados do censo de 2010.