1 Intro
La división territorial chilena consiste en la siguiente secuencia: región-provincia-comuna-zona-manzana. Por un asunto legal no todas las manzanas pueden contener toda la información requerida, pues sería muy fácil identificar a las personas. Éstas manzanas se denominan indeterminadas en los campos en cuestión.
Por ejemplo a nivel manzanal tenemos el dato de la cantidad de personas que la componen, pero no cuántos hombres y mujeres hay. A nivel zonal éste dato lo tenemos pudiendo calcular tanto la frecuencia como las proporciones que extrapolaremos a nivel manzanal.
Es ésto lo que vamos a implementar a una serie de variables a nivel manzanal, obteniendo primero frecuencias y proporciones zonales.1.1 Lectura de Censo 2017
En el Censo de manzanas tenemos algunos campos que nos indican la cantidad de personas, pero no de hombres y mujeres
<- readRDS(file = "censo_personas_con_clave_17") casen_2017
1.1.1 Cálculo de población total de hombres y mujeres por zona
<- casen_2017 %>%
a group_by(clave) %>%
summarise(PobTotH = sum(P08 == 1))
<- casen_2017 %>%
b group_by(clave) %>%
summarise(PobTotM = sum(P08 == 2))
<- cbind(a,b)
ab
<- ab[,-c(3)]
ab
# write_xlsx(ab, "hym_censo_2017.xlsx")
head(ab,30) %>% datatable(class = 'cell-border stripe',
options = list(
pageLength = 5,
autoWidth = TRUE
))
1.2 Lectura de censo de manzanas
El problema
options(scipen=999)
<- read.csv2("censo2017_manzanas.csv")
censo2017_manzanas head(censo2017_manzanas,30) %>% datatable(extensions = 'Buttons',class = 'cell-border stripe',
options = list(
pageLength = 5,
autoWidth = TRUE,
scrollX = TRUE
))
1.3 Corrección de códigos de manzana
El Censo de manzanas posee un código de identificación para cada una. El código que identifica la zona en el Censo de manzanas es diferente al del Censo de personas, en una hay un 0 que precede a los códigos comunales de 4 dígitos, por lo que se tuvieron que realizar correcciones en el código de manzana del Censo de manzanas.
Hagamos un subset de las columnas que nos interesan por el momento:
# censo2017_clavle <- censo2017_manzanas[,c(9,10,11,12)]
# censo2017_clavle$ID_MANZENT <- as.character(censo2017_clavle$ID_MANZENT)
# head(censo2017_clavle,30) %>% datatable(class = 'cell-border stripe',
# options = list(
# pageLength = 5,
# autoWidth = TRUE
# ))
Se evalúan los códigos de manzana y se le asigna un 0 al inicio a los que sólo posean 13 caracteres, los tienen 14 caracteres se dejan tal y como están.
# vector <- seq(1,nrow(censo2017_clavle))
# for (j in vector) {
# censo2017_clavle$ID_MANZENT[censo2017_clavle$ID_MANZENT == censo2017_clavle[j,1]] <- ifelse(str_length(censo2017_clavle[j,1]) < 14, paste0(0,censo2017_clavle[j,1]),paste0(censo2017_clavle[j,1]))
# }
#
# censo2017_clavle
Agregamos la columna ID_MANZENT_2 que contiene los códigos originales del Censo de manzanas.
# censo2017_clavle$ID_MANZENT_2 <- as.numeric(censo2017_clavle$ID_MANZENT)
# censo2017_clavle <- censo2017_clavle[,c(1,5,2,3,4)]
# censo2017_clavle
# write_xlsx(censo2017_clavle,"censo2017_clavle.xlsx")
# censo2017_manzanas_f <- read_xlsx("censo2017_clavle.xlsx")
# head(censo2017_manzanas_f,30) %>% datatable(class = 'cell-border stripe',
# options = list(
# pageLength = 5,
# autoWidth = TRUE
# ))
1.4 Ejercicio
Se filtra por código zona(ID_MANZENT) en la base de datos de manzana
<- filter(censo2017_manzanas, grepl("1101011001", ID_MANZENT) )
filtro_zona <- filtro_zona[,c(9,10,11,12)]
filtro_zona <- filtro_zona[1:25,]
filtro_zona %>% datatable(class = 'cell-border stripe',
filtro_zona options = list(
pageLength = 5,
autoWidth = TRUE
))
Por motivos del Ejercicio cambiamos los asteriscos * por 0 y tambiénn excluimos los valores 0 en la columna de personas y se separan los registros que poseen 0 en la columna de hombres y mujeres
$HOMBRES[filtro_zona$HOMBRES == "*"] <- 0
filtro_zona$MUJERES[filtro_zona$MUJERES == "*"] <- 0
filtro_zona
$HOMBRES <- as.numeric(filtro_zona$HOMBRES)
filtro_zona$MUJERES <- as.numeric(filtro_zona$MUJERES)
filtro_zona
<- filter(filtro_zona, filtro_zona$PERSONAS != 0)
filtro_zona_sin0
<- filter(filtro_zona_sin0, filtro_zona_sin0$HOMBRES != 0)
filtro %>% datatable(class = 'cell-border stripe',
filtro options = list(
pageLength = 5,
autoWidth = TRUE
))
Se calcula la proporción de hombres y mujeres a nivel zonal
<- sum(filtro_zona$HOMBRES)/sum(filtro_zona$PERSONAS)
porcent_h <- sum(filtro_zona$MUJERES)/sum(filtro_zona$PERSONAS)
porcent_m
print(data.frame(
prop_h = porcent_h,
prop_m = porcent_m
))
## prop_h prop_m
## 1 0.4957848 0.490566
Estimamos la cantidad de hombres y mujeres para la manzana 1101011001001 que tiene un total de 15 personas
*15 porcent_h
## [1] 7.436772
*15 porcent_m
## [1] 7.358491
Expandimos el calculo al resto de manzanas, se evalúa cual de los porcentajes es mayo y se redondea al numero entero superior (7.414495 => 8) y al inverso con el porcentaje menor(7.37785 => 7)
<- filter(filtro_zona_sin0, filtro_zona_sin0$HOMBRES == 0)
filtro2 $HOMBRES <- ifelse(porcent_h*filtro2$PERSONAS > porcent_m*filtro2$PERSONAS, ceiling(porcent_h*filtro2$PERSONAS) ,floor(porcent_h*filtro2$PERSONAS) )
filtro2$MUJERES <- ifelse(porcent_m*filtro2$PERSONAS > porcent_h*filtro2$PERSONAS, ceiling(porcent_m*filtro2$PERSONAS) ,floor(porcent_m*filtro2$PERSONAS) )
filtro2%>% datatable(class = 'cell-border stripe',
filtro2 options = list(
pageLength = 5,
autoWidth = TRUE
))
1.5 Unión con la tabla base
<- rbind(filtro2,filtro)
tabla_final %>% datatable(class = 'cell-border stripe',
tabla_final options = list(
pageLength = 5,
autoWidth = TRUE
))