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>"))