Nesta atividade serão construídos alguns mapas interativos utilizando os pacotes leaflet
(geração do mapa), rgdal
(importação de arquivos para criação do mapa) além do dplyr
(manipulação de data.frames), stringr
(manipulação de strings) e algumas funções do pacote base(nativo do R).
A base de dados que será utilizada será dos microdados do censo (amostra complexa) a partir da base de dados Pessoas do estado de Pernambuco.
A base de dados que será utilizada será dos microdados do censo (amostra complexa) a partir da base de dados Pessoas do estado de Pernambuco.
Para este exercício a base de dados não será ponderada, porém, o ideal é que este procedimento seja feito para que nossos resultados não fiquem viesados.
Inicialmente a base de dados é carregada para a memória do R tal como os pacotes a serem utilizados:
# Pacotes
suppressMessages(library(dplyr))
suppressMessages(library(leaflet))
suppressMessages(library(rgdal))
suppressMessages(library(stringr))
pes10 <- readr::read_csv("Amostra_Pessoas_26.txt",
col_names = FALSE)
## Parsed with column specification:
## cols(
## X1 = col_character()
## )
Após carregar a base, será retirada uma amostra de 1% do total para facilitar nossos cálculos e, em seguida, será feito um tratamento já que a base possui o formato mais “bruto” possível escolhendo as variáveis de interesse que são o código do munícipio e o código do nível de instrução.
es10_5 <- pes10 %>% sample_frac(0.01)
pes10_1 <- pes10 %>%
transmute(cod_muni = str_sub(X1, start = 1, end = 7),
cod_nvl_inst = str_sub(X1, start = 158, end = 158),
rendimento = str_sub(X1, start = 263, end = 269) %>%
as.integer)
Escolhidas as variáveis, os arquivos com o “esqueleto” do mapa serão carregados através da função readOGR do pacote rgdal.
shapePE <- rgdal::readOGR("26MUE250GC_SIR.shp",
stringsAsFactors=FALSE,
encoding="UTF-8")
## OGR data source with driver: ESRI Shapefile
## Source: "/home/heitor/Estatistica_computacional/18.04.2018/PE/26MUE250GC_SIR.shp", layer: "26MUE250GC_SIR"
## with 185 features
## It has 2 fields
Agora, algumas manipulações serão feitas para encontrar o indicador de interesse, que neste caso será a proporção de pessoas com curso superior no estado de Pernambuco dispostos por município.
A seguir o código com as manipulações e a geração do mapa:
# pessoas com nvl superior
supPE <- pes10_1 %>%
group_by(cod_nvl_inst,cod_muni) %>%
summarise(total = n()) %>%
mutate(nSUP = if_else(cod_nvl_inst=="5",total,as.integer(0))) %>%
group_by(cod_muni) %>%
mutate(propSUP = (nSUP/sum(total))*100) %>%
ungroup() %>%
dplyr::filter(cod_nvl_inst=="5") %>%
select(cod_muni,propSUP,total)
# nivel superior
shapePEcs <- merge(shapePE,supPE,by.x = "CD_GEOCMU", by.y = "cod_muni")
# contem NA
summary(as.factor(shapePEcs$propSUP))
## 0.16116035455278 0.0387146728610143 0.0395413206801107
## 2 1 1
## 0.0429553264604811 0.0441696113074205 0.0451875282422052
## 1 1 1
## 0.0469263256687001 0.0511247443762781 0.0511901714870745
## 1 1 1
## 0.0515198351365276 0.0527565286204168 0.0577034045008656
## 1 1 1
## 0.0629326620516048 0.0637836458731981 0.06765899864682
## 1 1 1
## 0.0726216412490922 0.0757862826828344 0.0773933906044424
## 1 1 1
## 0.078064012490242 0.0784313725490196 0.0909090909090909
## 1 1 1
## 0.0917010545621275 0.0933706816059757 0.0947418285172904
## 1 1 1
## 0.104058272632674 0.106044538706257 0.107028184088477
## 1 1 1
## 0.107944732297064 0.110314396028682 0.114580349470066
## 1 1 1
## 0.117693213024716 0.118483412322275 0.121580547112462
## 1 1 1
## 0.122448979591837 0.127877237851662 0.129032258064516
## 1 1 1
## 0.132415254237288 0.132802124833997 0.13531799729364
## 1 1 1
## 0.136128505309012 0.13953488372093 0.140845070422535
## 1 1 1
## 0.142196942765731 0.142348754448399 0.144404332129964
## 1 1 1
## 0.161290322580645 0.162179695102173 0.16273393002441
## 1 1 1
## 0.168067226890756 0.171232876712329 0.172488141440276
## 1 1 1
## 0.183150183150183 0.185873605947955 0.194120909595119
## 1 1 1
## 0.209324452901998 0.211595429538722 0.212224108658744
## 1 1 1
## 0.216182828906733 0.221729490022173 0.222002960039467
## 1 1 1
## 0.222518914107699 0.222788033099936 0.233879051119278
## 1 1 1
## 0.235769619400472 0.240456868049294 0.244584206848358
## 1 1 1
## 0.24603608529251 0.246575342465753 0.248292985723153
## 1 1 1
## 0.248756218905473 0.254560882477726 0.258249641319943
## 1 1 1
## 0.263435194942044 0.265839610101905 0.268006700167504
## 1 1 1
## 0.283375314861461 0.293960448957777 0.294525294525295
## 1 1 1
## 0.297492562685933 0.303490136570561 0.30839367122553
## 1 1 1
## 0.311249444197421 0.312907431551499 0.320366132723112
## 1 1 1
## 0.321027287319422 0.322450624748085 0.323325635103926
## 1 1 1
## 0.332336324360253 0.332520505431168 0.340425531914894
## 1 1 1
## 0.344827586206897 0.346129641283826 0.347463516330785
## 1 1 1
## 0.349344978165939 0.35020694046482 0.356633380884451
## 1 1 1
## 0.360750360750361 0.366780193869531 (Other)
## 1 1 82
## NA's
## 4
# Trocar onde tem NA para zero
shapePEcs$propSUP[is.na(shapePEcs$propSUP)==TRUE] = 0
palcs <- colorBin("RdYlGn", domain = shapePEcs$propSUP, n = 5)
# popup nvl superior
state_popupdoc_cs <- paste0("<strong>Municipio: </strong>",
shapePE$NM_MUNICIP,
"<br><strong>Propor??o: </strong>",
shapePEcs$propSUP %>% round(3))
# Mapa curso superior
shapePEcs %>%
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(fillColor = ~palcs(shapePEcs$propSUP),
fillOpacity = 0.8,
color = "#BDBDC3",
weight = 1,
popup = state_popupdoc_cs) %>%
addLegend("bottomright", pal = palcs, values = ~shapePEcs$propSUP,
opacity = 1, title = paste0("<strong>Prop. de pessoas com </strong>","<br><strong>curso superior</strong>"))
Agora o mesmo procedimento será realizados, porém, para aqueles que não possuem instrução.
seminstPE <- pes10_1 %>%
group_by(cod_nvl_inst,cod_muni) %>%
summarise(total = n()) %>%
mutate(nSUP = if_else(cod_nvl_inst=="1",total,as.integer(0))) %>%
group_by(cod_muni) %>%
mutate(propSUP = (nSUP/sum(total))*100) %>%
ungroup() %>%
dplyr::filter(cod_nvl_inst=="1") %>%
select(cod_muni,propSUP,total)
shapePEsi <- merge(shapePE,seminstPE,by.x = "CD_GEOCMU", by.y = "cod_muni")
shapePEsi$propSUP[is.na(shapePEsi$propSUP)==TRUE] = 0
palsi <- colorBin("RdYlGn", domain = shapePEsi$propSUP,
reverse = TRUE)
state_popupdoc_si <- paste0("<strong>Municipio: </strong>",
shapePE$NM_MUNICIP,
"<br><strong>Propor??o: </strong>",
shapePEsi$propSUP %>% round(3))
# Mapa sem instrucao
shapePEsi %>%
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(fillColor = ~palsi(shapePEsi$propSUP),
fillOpacity = 0.8,
color = "#BDBDC3",
weight = 1,
popup = state_popupdoc_si) %>%
addLegend("bottomright", pal = palsi, values = ~shapePEsi$propSUP,
opacity = 1, title = paste0("<strong>Prop. de pessoas sem </strong>",
"<br><strong>instru??o ou fundamental</strong>",
"<br><strong>incompleto </strong>"))