1 Introducción
1.1 Lectura de la tabla madre
Por alguna razón, la base de datos de los Censos de población y y vivienda a nivel de manzanas en Chile no están en la página misma del Censo, sino en la del INE.
Con ella se contruyó una tabla excel con datos sociales y geográficos. Deseamos imputar los valores sociales indeterminados mediante proporciones de los datos existentes y añadir columnas con información categórica que indique la distancia de la manzana a diversos centros de servicios sociales, como por ejemplo a un retén de carabineros, un establecimientos de salud o educación.
Convertimos el excel a formato rds para disminuir la velocidad de carga:
# bd_manzanas <- read_xlsx("tabla_madre_trabajo.xlsx", sheet = 2 )
# bd_manzanas <- saveRDS(bd_manzanas,"tabla_madre_trabajo.xlsx.rds")
<- readRDS("tabla_madre_trabajo.rds") bd_manzanas
1.2 Primer tratamiento
Extraemos las variables de interés, nombramos correctamente las cabeceras y convertimos a tipo numérico los campos que deben serlo. En definitiva, construímos nuestro dataframe de trabajo.
colnames(bd_manzanas) <- c(paste0(bd_manzanas[1,]))
<- bd_manzanas[-1,]
bd_manzanas <- bd_manzanas[,c("TOTAL_PERS","TOTAL_HOMB","TOTAL_MUJE","PERSONAS_0","PERSONAS_6","PERSONAS_1","PERSONAS_M","PERSONAS_E","PUEBLOS_IN","COD_ZonLoc","COD_MzEnt","1_MEAN","2_MEAN","3_MEAN","4_MEAN","5_MEAN","6_MEAN","7_MEAN","8_MEAN","CATEGORIA", "id_ciud_N")]
datos_pob $TOTAL_PERS <- as.numeric(datos_pob$TOTAL_PERS)
datos_pob$TOTAL_HOMB <- as.numeric(datos_pob$TOTAL_HOMB)
datos_pob$TOTAL_MUJE <- as.numeric(datos_pob$TOTAL_MUJE)
datos_pob$PERSONAS_0 <- as.numeric(datos_pob$PERSONAS_0)
datos_pob$PERSONAS_6 <- as.numeric(datos_pob$PERSONAS_6)
datos_pob$PERSONAS_1 <- as.numeric(datos_pob$PERSONAS_1)
datos_pob$PERSONAS_M <- as.numeric(datos_pob$PERSONAS_M)
datos_pob$PERSONAS_E <- as.numeric(datos_pob$PERSONAS_E)
datos_pob$PUEBLOS_IN <- as.numeric(datos_pob$PUEBLOS_IN)
datos_pob
colnames(datos_pob) <- c("PERSONAS","HOMBRES","MUJERES","EDAD_0A5","EDAD_6A14","EDAD_15A64","EDAD_65YMAS","INMIGRANTES","PUEBLO","COD_ZonLoc","COD_MzEnt","1_MEAN","2_MEAN","3_MEAN","4_MEAN","5_MEAN","6_MEAN","7_MEAN","8_MEAN","CATEGORIA","id_ciud_N")
¿Cuántos registros son?
nrow(datos_pob)
## [1] 151501
Veamos los primeros 1000:
<- datos_pob[c(1:1000),]
datos_pob_sub datatable(datos_pob_sub, extensions = 'Buttons', escape = FALSE, rownames = FALSE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'dataset_subseteado'),
list(extend='pdf',
filename= 'dataset_subseteado')),
text = 'Download')), scrollX = TRUE))
Existen algunos valores indeterminados en los campos de hombres y mujeres que debemos imputar.
1.3 Imputación de hombres y mujeres
Sobre nuestro dataframe de trabajo imputaremos los valores de hombres y mujeres indeterminados y construiremos un rds para hacer eficientes las lecturas:
# El código comentado se utiliza para construir el rds:
# poblacion_final <- data.frame()
#
# for (z in unique(datos_pob$COD_ZonLoc)) {
#
# # se considera una zona (cada vez del for)
# pob_zona <- filter(datos_pob, COD_ZonLoc== z)
#
# pob_zona <- mutate_all(pob_zona, ~replace(., is.na(.), -1))
#
# pob_zona_0 <- filter(pob_zona, HOMBRES == -1)
#
# porcent_h <- sum(pob_zona$HOMBRES)/sum(pob_zona$PERSONAS)
# porcent_m <- sum(pob_zona$MUJERES)/sum(pob_zona$PERSONAS)
#
# filtro2 <- filter(pob_zona_0, pob_zona_0$HOMBRES == -1)
#
# 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) )
#
# pob_final <- rbind(filter(pob_zona, HOMBRES != -1),filtro2)
#
# poblacion_final <- rbind(poblacion_final,pob_final)
#
# }
# tb1 <- poblacion_final
#
# saveRDS(tb1,"tabla_h_y_m.rds")
<- readRDS("tabla_h_y_m.rds") tb1
Veamos los 100 primeros registros de la tabla corregida sobre los sexos:
<- tb1[c(1:100),]
tb1_sub
<- tb1_sub[,-c(4:9,12:21),drop=FALSE] # still a data.frame
tb1_sub
datatable(tb1_sub, extensions = 'Buttons', escape = FALSE, rownames = FALSE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'dataset_subseteado'),
list(extend='pdf',
filename= 'dataset_subseteado')),
text = 'Download')), scrollX = TRUE))
Los registros siguen siendo 151501
nrow(tb1)
## [1] 151501
1.3.1 Verificación
Para verificar lo correcto del código observemos los NAs existentes en las celdas de hombres y mujeres en las manzanas 3101031001017 y 3101031001021 de la zona 3101031001 de la tabla excel madre:
Subseteemos la tabla de trabajo por la zona 3101031001 y revisemos los datos faltantes para hombres y mujeres. Ignoremos los demas campos por el momento:
<- tb1[tb1$COD_ZonLoc == 3101031001, ] tb1_3101031001
Resultan sólo 25 registros:
<- tb1_3101031001[,-c(4:9,12:21),drop=FALSE] # still a data.frame
tb1_3101031001
datatable(tb1_3101031001, extensions = 'Buttons', escape = FALSE, rownames = FALSE,
options = list(dom = 'Bfrtip',
buttons = list('colvis', list(extend = 'collection',
buttons = list(
list(extend='copy'),
list(extend='excel',
filename = 'dataset_subseteado'),
list(extend='pdf',
filename= 'dataset_subseteado')),
text = 'Download')), scrollX = TRUE))
Y vemos que la imputación resulta correcta:
1.4 Imputación de edades
1.4.1 En el rango de 0 a 5 años (EDAD_0A5)
# El código comentado se utiliza para construir el rds:
# poblacion_final <- data.frame()
#
# for (z in unique(datos_pob$COD_ZonLoc)) {
# #
# pob_zona <- filter(tb1, COD_ZonLoc== z)
# pob_zona <- mutate_all(pob_zona, ~replace(., is.na(.), -1))
# pob_zona_0 <- filter(pob_zona, EDAD_0A5 == -1 )
# #
# porcent_edad <- sum(filter(pob_zona, EDAD_0A5 >= 0)[4])/sum(pob_zona$PERSONAS)
# #
# filtro2 <- filter(pob_zona_0, pob_zona_0$EDAD_0A5 == -1)
# filtro2$EDAD_0A5 <- plyr::round_any(porcent_edad*filtro2$PERSONAS,1)
# #
# pob_final <- rbind(filter(pob_zona, EDAD_0A5 != -1),filtro2)
# poblacion_final <- rbind(poblacion_final,pob_final)
# }
# tb1 <- poblacion_final
# saveRDS(tb1,"EDAD_0A5.rds")
# r_0 <- tb1[order( tb1[,11] ),]
# r_0 <- r_0[c(1:100),]
# r_0
6 a 14
# poblacion_final <- data.frame()
#
# for (z in unique(datos_pob$COD_ZonLoc)) {
#
# pob_zona <- filter(tb1, COD_ZonLoc== z)
# pob_zona <- mutate_all(pob_zona, ~replace(., is.na(.), -1))
# pob_zona_0 <- filter(pob_zona, EDAD_6A14 == -1 )
#
# porcent_edad <- sum(filter(pob_zona, EDAD_6A14 >= 0)[5])/sum(pob_zona$PERSONAS)
#
# filtro2 <- filter(pob_zona_0, pob_zona_0$EDAD_6A14 == -1)
# filtro2$EDAD_6A14 <- round_any(porcent_edad*filtro2$PERSONAS,1)
#
# pob_final <- rbind(filter(pob_zona, EDAD_6A14 != -1),filtro2)
# poblacion_final <- rbind(poblacion_final,pob_final)
# }
# tb1 <- poblacion_final
# saveRDS(tb1,"EDAD_6A14.rds")
# r_0 <- tb1[order( tb1[,11] ),]
# r_0 <- r_0[c(1:100),]
# r_0
EDAD_15A64
# poblacion_final <- data.frame()
# #
# for (z in unique(datos_pob$COD_ZonLoc)) {
# #
# pob_zona <- filter(tb1, COD_ZonLoc== z)
# pob_zona <- mutate_all(pob_zona, ~replace(., is.na(.), -1))
# pob_zona_0 <- filter(pob_zona, EDAD_15A64 == -1 )
# #
# porcent_edad <- sum(filter(pob_zona, EDAD_15A64 >= 0)[6])/sum(pob_zona$PERSONAS)
# #
# filtro2 <- filter(pob_zona_0, pob_zona_0$EDAD_15A64 == -1)
# filtro2$EDAD_15A64 <- round_any(porcent_edad*filtro2$PERSONAS,1)
# #
# pob_final <- rbind(filter(pob_zona, EDAD_15A64 != -1),filtro2)
# poblacion_final <- rbind(poblacion_final,pob_final)
# }
# tb1 <- poblacion_final
# saveRDS(tb1,"EDAD_15A64.rds")
# r_0 <- tb1[order( tb1[,11] ),]
# r_0 <- r_0[c(1:100),]
# r_0
2 Cálculo EDAD_65YMAS
# poblacion_final <- data.frame()
#
# for (z in unique(datos_pob$COD_ZonLoc)) {
#
# pob_zona <- filter(tb1, COD_ZonLoc== z)
# pob_zona <- mutate_all(pob_zona, ~replace(., is.na(.), -1))
# pob_zona_0 <- filter(pob_zona, EDAD_65YMAS == -1 )
#
# porcent_edad <- sum(filter(pob_zona, EDAD_65YMAS >= 0)[7])/sum(pob_zona$PERSONAS)
#
# filtro2 <- filter(pob_zona_0, pob_zona_0$EDAD_65YMAS == -1)
# filtro2$EDAD_65YMAS <- round_any(porcent_edad*filtro2$PERSONAS,1)
#
# pob_final <- rbind(filter(pob_zona, EDAD_65YMAS != -1),filtro2)
# poblacion_final <- rbind(poblacion_final,pob_final)
# }
# tb1 <- poblacion_final
# saveRDS(tb1,"EDAD_65YMAS.rds")
<- readRDS("EDAD_65YMAS.rds") tb1
tb1 resulta la tabla final en cuanto sexo y edades. Veamos sus 6 primeros registros:
head(tb1)
## # A tibble: 6 x 21
## PERSONAS HOMBRES MUJERES EDAD_0A5 EDAD_6A14 EDAD_15A64 EDAD_65YMAS INMIGRANTES
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 65 36 29 5 6 40 14 -1
## 2 191 105 86 20 21 123 27 11
## 3 102 49 53 4 14 64 20 -1
## 4 69 40 29 7 5 47 10 -1
## 5 554 265 289 56 124 354 20 24
## 6 58 25 33 7 5 32 14 0
## # ... with 13 more variables: PUEBLO <dbl>, COD_ZonLoc <chr>, COD_MzEnt <chr>,
## # 1_MEAN <chr>, 2_MEAN <chr>, 3_MEAN <chr>, 4_MEAN <chr>, 5_MEAN <chr>,
## # 6_MEAN <chr>, 7_MEAN <chr>, 8_MEAN <chr>, CATEGORIA <chr>, id_ciud_N <chr>
# r_0 <- tb1[order( tb1[,11] ),]
# r_0 <- r_0[c(1:100),]
# r_0
# writexl::write_xlsx(tb1,"sexo_y_edad.xlsx")
0+ 0+ 24+ 6
## [1] 30
5+ 6+ 34+ 12
## [1] 57
35+ 29
## [1] 64
2.1 Cálculo INMIGRANTES
# poblacion_final <- data.frame()
#
# for (z in unique(datos_pob$COD_ZonLoc)) {
#
# pob_zona <- filter(tb1, COD_ZonLoc== z)
# pob_zona <- mutate_all(pob_zona, ~replace(., is.na(.), -1))
# pob_zona_0 <- filter(pob_zona, INMIGRANTES == -1 )
#
# porcent_edad <- sum(filter(pob_zona, INMIGRANTES >= 0)[8])/sum(pob_zona$PERSONAS)
#
# filtro2 <- filter(pob_zona_0, pob_zona_0$INMIGRANTES == -1)
# filtro2$INMIGRANTES <- round_any(porcent_edad*filtro2$PERSONAS,1)
#
# pob_final <- rbind(filter(pob_zona, INMIGRANTES != -1),filtro2)
# poblacion_final <- rbind(poblacion_final,pob_final)
#
# }
# tb1 <- poblacion_final
#
# saveRDS(tb1,"inmigrantes.rds")
# tb1 <- readRDS("inmigrantes.rds")
2.2 Cálculo PUEBLO INDÍGENA
# poblacion_final <- data.frame()
#
# for (z in unique(datos_pob$COD_ZonLoc)) {
#
# pob_zona <- filter(tb1, COD_ZonLoc== z)
# pob_zona <- mutate_all(pob_zona, ~replace(., is.na(.), -1))
# pob_zona_0 <- filter(pob_zona, PUEBLO == -1 )
#
# porcent_edad <- sum(filter(pob_zona, PUEBLO >= 0)[8])/sum(pob_zona$PERSONAS)
#
# filtro2 <- filter(pob_zona_0, pob_zona_0$PUEBLO == -1)
# filtro2$PUEBLO <- round_any(porcent_edad*filtro2$PERSONAS,1)
#
# pob_final <- rbind(filter(pob_zona, PUEBLO != -1),filtro2)
# poblacion_final <- rbind(poblacion_final,pob_final)
# }
# tb1 <- poblacion_final
#
# saveRDS(tb1,"pueblos_y_final.rds")
<- readRDS("pueblos_y_final.rds") tb1
# writexl::write_xlsx(tb1,"sexo_edad_inmi_pueblos.xlsx")
2.3 Rangos de variables
2.3.1 Leamos nuevamente la tabla madre y despleguemos los 10 primeros registros:
<- readRDS("tabla_madre_trabajo.rds")
bd_manzanas colnames(bd_manzanas) <- c(paste0(bd_manzanas[1,]))
<- bd_manzanas[-1,]
bd_manzanas
<- as.data.frame(bd_manzanas)
bd_manzanas_data <- head(bd_manzanas_data,10)
bd_manzanas_1
# datatable(bd_manzanas_1, extensions = 'Buttons', escape = FALSE, rownames = FALSE,
# options = list(dom = 'Bfrtip',
# buttons = list('colvis', list(extend = 'collection',
# buttons = list(
# list(extend='copy'),
# list(extend='excel',
# filename = 'dataset_subseteado'),
# list(extend='pdf',
# filename= 'dataset_subseteado')),
# text = 'Download')), scrollX = TRUE))
2.3.2 De la tabla extraemos los códigos
Salud
# bd_manzanas <- readRDS("v2_13_Variables_Euclidean_manzanas_extrapolar.rds")
# colnames(bd_manzanas) <- c(paste0(bd_manzanas[1,]))
# bd_manzanas <- bd_manzanas[-1,]
# bd_manzanas
<- read_xlsx("codigos.xlsx")
rangos
<- unique(rangos$Variable)
variables <- filter(rangos, Variable == variables[1])
rangosv <- as.data.frame(rangosv)
rangosv rangosv
## Código Variable Rango Inferior Superior Descripción
## 1 1 Salud 1 24 500 24 - 500
## 2 1 Salud 2 500 1000 500 - 1000
## 3 1 Salud 3 1000 2000 1000 - 2000
## 4 1 Salud 4 2000 4000 2000 - 4000
## 5 1 Salud 5 4000 6000 4000 - 6000
## 6 1 Salud 6 6000 6000 >6000
Carabineros
<- unique(rangos$Variable)
variables <- filter(rangos, Variable == variables[2])
rangosv <- as.data.frame(rangosv)
rangosv <- rangosv
Carabineros Carabineros
## Código Variable Rango Inferior Superior Descripción
## 1 2 Carabineros 1 17 500 18 - 500
## 2 2 Carabineros 2 500 1000 500 - 1000
## 3 2 Carabineros 3 1000 2000 1000 - 2000
## 4 2 Carabineros 4 2000 5000 2000 - 5000
## 5 2 Carabineros 5 5000 10000 5000 - 10000
## 6 2 Carabineros 6 10000 10000 >10000
Parvularia
<- unique(rangos$Variable)
variables <- filter(rangos, Variable == variables[3])
rangosv <- as.data.frame(rangosv)
rangosv <- rangosv
Parvularia Parvularia
## Código Variable Rango Inferior Superior Descripción
## 1 3 Parvularia 1 12 100 12 - 100
## 2 3 Parvularia 2 100 250 100 - 250
## 3 3 Parvularia 3 250 500 250 - 500
## 4 3 Parvularia 4 500 1000 500 - 1000
## 5 3 Parvularia 5 1000 5000 1000 -5000
## 6 3 Parvularia 6 5000 NA >5000
EducaciónSuperior
<- unique(rangos$Variable)
variables <- filter(rangos, Variable == variables[4])
rangosv <- as.data.frame(rangosv)
rangosv <- rangosv
EducaciónSuperior EducaciónSuperior
## Código Variable Rango Inferior Superior Descripción
## 1 4 Eduación Superior 1 17 1000 17 - 1000
## 2 4 Eduación Superior 2 1000 2500 1000 - 2500
## 3 4 Eduación Superior 3 2500 10000 2500 - 10000
## 4 4 Eduación Superior 4 10000 35000 10000 - 35000
## 5 4 Eduación Superior 5 35000 75000 35000 - 75000
## 6 4 Eduación Superior 6 75000 75000 >75000
Educacion_Basica_y_Media
<- unique(rangos$Variable)
variables <- filter(rangos, Variable == variables[5])
rangosv <- as.data.frame(rangosv)
rangosv <- rangosv
Educacion_Basica_y_Media Educacion_Basica_y_Media
## Código Variable Rango Inferior Superior Descripción
## 1 5 Educación Básica y Media 1 14 100 14 - 100
## 2 5 Educación Básica y Media 2 100 250 100 -250
## 3 5 Educación Básica y Media 3 250 500 250 - 500
## 4 5 Educación Básica y Media 4 500 1000 500 - 1000
## 5 5 Educación Básica y Media 5 1000 2000 1000 - 2000
## 6 5 Educación Básica y Media 6 2000 2000 >2000
SdeI_Turistico
<- unique(rangos$Variable)
variables <- filter(rangos, Variable == variables[6])
rangosv <- as.data.frame(rangosv)
rangosv <- rangosv
SdeI_Turistico SdeI_Turistico
## Código Variable Rango Inferior Superior Descripción
## 1 6 Sitio de Interés Turístico 1 15 500 15 -500
## 2 6 Sitio de Interés Turístico 2 500 1000 500 - 1000
## 3 6 Sitio de Interés Turístico 3 1000 3000 1000 - 3000
## 4 6 Sitio de Interés Turístico 4 3000 6000 3000 - 6000
## 5 6 Sitio de Interés Turístico 5 6000 15000 6000 - 15000
## 6 6 Sitio de Interés Turístico 6 15000 15000 >15000
Monumento_Nacional
<- unique(rangos$Variable)
variables <- filter(rangos, Variable == variables[7])
rangosv <- as.data.frame(rangosv)
rangosv <- rangosv
Monumento_Nacional Monumento_Nacional
## Código Variable Rango Inferior Superior Descripción
## 1 7 Monumento Nacional 1 14 2500 14 - 2500
## 2 7 Monumento Nacional 2 2500 10000 2500 - 10000
## 3 7 Monumento Nacional 3 10000 20000 10000 - 20000
## 4 7 Monumento Nacional 4 20000 30000 20000 - 30000
## 5 7 Monumento Nacional 5 30000 50000 30000 - 50000
## 6 7 Monumento Nacional 6 107026 107026 >107026
SdeInteresPoblacional
<- unique(rangos$Variable)
variables <- filter(rangos, Variable == variables[8])
rangosv <- as.data.frame(rangosv)
rangosv <- rangosv
SdeInteresPoblacional SdeInteresPoblacional
## Código Variable Rango Inferior Superior Descripción
## 1 8 Sitios de Interés Poblacional 1 8 250 8 - 250
## 2 8 Sitios de Interés Poblacional 2 250 750 250 - 750
## 3 8 Sitios de Interés Poblacional 3 750 1500 750 - 1500
## 4 8 Sitios de Interés Poblacional 4 1500 5000 1500 - 5000
## 5 8 Sitios de Interés Poblacional 5 5000 10000 5000 - 5000
## 6 8 Sitios de Interés Poblacional 6 24588 24588 >24588
3 Distancia a centros de salud.
De nuestro dataframe original extraemos los campos que nos interesan: COD_ZonLoc, COD_MzEnt y 1_MEAN. El objetivo será construir dos columnas más: una con el código respectivo y otro con el rango al que pertenece ese código:
63: COD_ZonLoc
64: COD_MzEnt
103: 1_MEAN
Queda de la siguiente forma:
<- bd_manzanas[,c(63,64,103,111,119,127,71,79,87,95),drop=FALSE] # still a data.frame
mean_rango head(mean_rango)
## # A tibble: 6 x 10
## COD_ZonLoc COD_MzEnt `1_MEAN` `2_MEAN` `3_MEAN` `4_MEAN` `5_MEAN` `6_MEAN`
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 3101061006 310106100~ 668.5670~ 731.7448~ 435.1309~ 653.077~ 326.414~ 712.951~
## 2 3101071001 310107100~ 393.1762~ 904.1413~ 309.6657~ 651.223~ 304.266~ 483.336~
## 3 3101021001 310102100~ 97.40482~ 389.5670~ 236.4910~ 423.627~ 178.536~ 312.308~
## 4 3101071001 310107100~ 441.9268~ 942.6537~ 357.9010~ 636.275~ 351.860~ 517.130~
## 5 3101071001 310107100~ 517.4833~ 874.0597~ 408.4091~ 623.498~ 403.196~ 575.439~
## 6 3101071001 310107100~ 318.2915~ 829.8747~ 233.6168~ 664.453~ 228.949~ 425.348~
## # ... with 2 more variables: 7_MEAN <chr>, 8_MEAN <chr>
$`1_MEAN` <- as.numeric(mean_rango$`1_MEAN`)
mean_rangohead(mean_rango)
## # A tibble: 6 x 10
## COD_ZonLoc COD_MzEnt `1_MEAN` `2_MEAN` `3_MEAN` `4_MEAN` `5_MEAN` `6_MEAN`
## <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 3101061006 3101061006028 669. 731.744~ 435.130~ 653.077~ 326.414~ 712.951~
## 2 3101071001 3101071001500 393. 904.141~ 309.665~ 651.223~ 304.266~ 483.336~
## 3 3101021001 3101021001008 97.4 389.567~ 236.491~ 423.627~ 178.536~ 312.308~
## 4 3101071001 3101071001024 442. 942.653~ 357.901~ 636.275~ 351.860~ 517.130~
## 5 3101071001 3101071001004 517. 874.059~ 408.409~ 623.498~ 403.196~ 575.439~
## 6 3101071001 3101071001026 318. 829.874~ 233.616~ 664.453~ 228.949~ 425.348~
## # ... with 2 more variables: 7_MEAN <chr>, 8_MEAN <chr>
3.0.1 3101061006
la zona 3101061006 contiene data con rangos con 1_MEAN 2, así que subseteemos por esa zona, verificamos y asignamos el requerimiento:
<- mean_rango[mean_rango$COD_ZonLoc == 3101061006,]
mean_rango_3101061006 mean_rango_3101061006
## # A tibble: 29 x 10
## COD_ZonLoc COD_MzEnt `1_MEAN` `2_MEAN` `3_MEAN` `4_MEAN` `5_MEAN` `6_MEAN`
## <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 3101061006 310106100~ 669. 731.7448~ 435.1309~ 653.077~ 326.414~ 712.951~
## 2 3101061006 310106100~ 621. 769.5996~ 412.7816~ 620.796~ 331.392~ 661.430~
## 3 3101061006 310106100~ 732. 702.0938~ 113.9398~ 1096.36~ 176.044~ 1153.73~
## 4 3101061006 310106100~ 630. 866.7491~ 246.9169~ 917.413~ 242.548~ 850.907~
## 5 3101061006 310106100~ 700. 673.8950~ 237.1918~ 881.953~ 251.905~ 942.541~
## 6 3101061006 310106100~ 706. 676.9712~ 118.6403~ 1040.55~ 185.262~ 1106.04~
## 7 3101061006 310106100~ 559. 531.1021~ 125.9111~ 949.447~ 240.797~ 1095.65~
## 8 3101061006 310106100~ 696. 666.8235~ 145.2801~ 990.617~ 195.777~ 1055.64~
## 9 3101061006 310106100~ 747. 739.3347~ 218.8915~ 897.879~ 215.527~ 920.622~
## 10 3101061006 310106100~ 732. 758.6476~ 272.1932~ 844.517~ 267.190~ 852.921~
## # ... with 19 more rows, and 2 more variables: 7_MEAN <chr>, 8_MEAN <chr>
if(mean_rango_3101061006$`1_MEAN` >= rangosv$Inferior[2] & mean_rango_3101061006$`1_MEAN` <= rangosv$Superior[2]) {
$Categoría_salud <- 2
mean_rango_3101061006$Rango_salud <- "500 - 1000"
mean_rango_3101061006
} mean_rango_3101061006
## # A tibble: 29 x 12
## COD_ZonLoc COD_MzEnt `1_MEAN` `2_MEAN` `3_MEAN` `4_MEAN` `5_MEAN` `6_MEAN`
## <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 3101061006 310106100~ 669. 731.7448~ 435.1309~ 653.077~ 326.414~ 712.951~
## 2 3101061006 310106100~ 621. 769.5996~ 412.7816~ 620.796~ 331.392~ 661.430~
## 3 3101061006 310106100~ 732. 702.0938~ 113.9398~ 1096.36~ 176.044~ 1153.73~
## 4 3101061006 310106100~ 630. 866.7491~ 246.9169~ 917.413~ 242.548~ 850.907~
## 5 3101061006 310106100~ 700. 673.8950~ 237.1918~ 881.953~ 251.905~ 942.541~
## 6 3101061006 310106100~ 706. 676.9712~ 118.6403~ 1040.55~ 185.262~ 1106.04~
## 7 3101061006 310106100~ 559. 531.1021~ 125.9111~ 949.447~ 240.797~ 1095.65~
## 8 3101061006 310106100~ 696. 666.8235~ 145.2801~ 990.617~ 195.777~ 1055.64~
## 9 3101061006 310106100~ 747. 739.3347~ 218.8915~ 897.879~ 215.527~ 920.622~
## 10 3101061006 310106100~ 732. 758.6476~ 272.1932~ 844.517~ 267.190~ 852.921~
## # ... with 19 more rows, and 4 more variables: 7_MEAN <chr>, 8_MEAN <chr>,
## # Categoría_salud <dbl>, Rango_salud <chr>
3.0.2 3101021001
la zona 3101021001 contiene data con rangos con 1_MEAN 1, así que subseteemos por esa zona y verificamos:
<- mean_rango[mean_rango$COD_ZonLoc == 3101021001,]
mean_rango_3101021001 mean_rango_3101021001
## # A tibble: 11 x 10
## COD_ZonLoc COD_MzEnt `1_MEAN` `2_MEAN` `3_MEAN` `4_MEAN` `5_MEAN` `6_MEAN`
## <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 3101021001 310102100~ 97.4 389.5670~ 236.4910~ 423.627~ 178.536~ 312.308~
## 2 3101021001 310102100~ 77.4 136.3358~ 407.7918~ 203.841~ 309.149~ 272.365~
## 3 3101021001 310102100~ 84.0 260.6958~ 287.5810~ 333.062~ 237.689~ 371.348~
## 4 3101021001 310102100~ 216. 493.5875~ 168.4470~ 553.413~ 102.485~ 183.466~
## 5 3101021001 310102100~ 41.2 504.2948~ 320.8755~ 442.053~ 79.8555~ 449.174~
## 6 3101021001 310102100~ 153. 596.4230~ 278.0389~ 555.632~ 78.9346~ 549.445~
## 7 3101021001 310102100~ 86.2 353.1465~ 353.4061~ 309.676~ 178.332~ 343.830~
## 8 3101021001 310102100~ 86.6 566.4560~ 91.36149~ 574.913~ 87.3744~ 291.480~
## 9 3101021001 310102100~ 95.7 226.6768~ 399.1003~ 220.393~ 286.214~ 289.462~
## 10 3101021001 310102100~ 102. 414.0591~ 236.0573~ 400.891~ 212.764~ 427.189~
## 11 3101021001 310102100~ 172. 618.2527~ 167.9329~ 611.413~ 113.618~ 352.403~
## # ... with 2 more variables: 7_MEAN <chr>, 8_MEAN <chr>
if(mean_rango_3101021001$`1_MEAN` >= rangosv$Inferior[1] & mean_rango_3101021001$`1_MEAN` <= rangosv$Superior[1]) {
$Categoría_salud <- 1
mean_rango_3101021001$Rango_salud <- "24 - 500"
mean_rango_3101021001
} mean_rango_3101021001
## # A tibble: 11 x 12
## COD_ZonLoc COD_MzEnt `1_MEAN` `2_MEAN` `3_MEAN` `4_MEAN` `5_MEAN` `6_MEAN`
## <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 3101021001 310102100~ 97.4 389.5670~ 236.4910~ 423.627~ 178.536~ 312.308~
## 2 3101021001 310102100~ 77.4 136.3358~ 407.7918~ 203.841~ 309.149~ 272.365~
## 3 3101021001 310102100~ 84.0 260.6958~ 287.5810~ 333.062~ 237.689~ 371.348~
## 4 3101021001 310102100~ 216. 493.5875~ 168.4470~ 553.413~ 102.485~ 183.466~
## 5 3101021001 310102100~ 41.2 504.2948~ 320.8755~ 442.053~ 79.8555~ 449.174~
## 6 3101021001 310102100~ 153. 596.4230~ 278.0389~ 555.632~ 78.9346~ 549.445~
## 7 3101021001 310102100~ 86.2 353.1465~ 353.4061~ 309.676~ 178.332~ 343.830~
## 8 3101021001 310102100~ 86.6 566.4560~ 91.36149~ 574.913~ 87.3744~ 291.480~
## 9 3101021001 310102100~ 95.7 226.6768~ 399.1003~ 220.393~ 286.214~ 289.462~
## 10 3101021001 310102100~ 102. 414.0591~ 236.0573~ 400.891~ 212.764~ 427.189~
## 11 3101021001 310102100~ 172. 618.2527~ 167.9329~ 611.413~ 113.618~ 352.403~
## # ... with 4 more variables: 7_MEAN <chr>, 8_MEAN <chr>, Categoría_salud <dbl>,
## # Rango_salud <chr>
3.1 Generalizacion
<- bd_manzanas[,c(63,64,103,111,119,127,71,79,87,95),drop=FALSE] # still a data.frame
mean_rango $`1_MEAN` <- as.numeric(mean_rango$`1_MEAN`)
mean_rango$`2_MEAN` <- as.numeric(mean_rango$`2_MEAN`)
mean_rango$`3_MEAN` <- as.numeric(mean_rango$`3_MEAN`)
mean_rango$`4_MEAN` <- as.numeric(mean_rango$`4_MEAN`)
mean_rango$`5_MEAN` <- as.numeric(mean_rango$`5_MEAN`)
mean_rango$`6_MEAN` <- as.numeric(mean_rango$`6_MEAN`)
mean_rango$`7_MEAN` <- as.numeric(mean_rango$`7_MEAN`)
mean_rango$`8_MEAN` <- as.numeric(mean_rango$`8_MEAN`)
mean_rango
colnames(mean_rango)[3] <- "Salud"
colnames(mean_rango)[4] <- "Carabineros"
colnames(mean_rango)[5] <- "Parvularia"
colnames(mean_rango)[6] <- "EducaciónSuperior"
colnames(mean_rango)[7] <- "Educacion_Basica_y_Media"
colnames(mean_rango)[8] <- "SdeI_Turistico"
colnames(mean_rango)[9] <- "Monumento_Nacional"
colnames(mean_rango)[10] <- "SdeInteresPoblacional"
head(mean_rango)
## # A tibble: 6 x 10
## COD_ZonLoc COD_MzEnt Salud Carabineros Parvularia EducaciónSuperior
## <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 3101061006 3101061006028 669. 732. 435. 653.
## 2 3101071001 3101071001500 393. 904. 310. 651.
## 3 3101021001 3101021001008 97.4 390. 236. 424.
## 4 3101071001 3101071001024 442. 943. 358. 636.
## 5 3101071001 3101071001004 517. 874. 408. 623.
## 6 3101071001 3101071001026 318. 830. 234. 664.
## # ... with 4 more variables: Educacion_Basica_y_Media <dbl>,
## # SdeI_Turistico <dbl>, Monumento_Nacional <dbl>, SdeInteresPoblacional <dbl>
# ifelse(mean_rango$`1_MEAN` >= 500 & mean_rango$`1_MEAN` <= 1000,mean_rango$Categoría_salud <- 2, ifelse(mean_rango$`1_MEAN` >= 24 & mean_rango$`1_MEAN` <= 500,mean_rango$Categoría_salud <- 1,mean_rango$Categoría_salud <- 3))
<- mean_rango %>% mutate(Categoría_Salud =
mean_rango case_when(Salud >= 24 & Salud <= 500 ~ "1",
> 500 & Salud <= 1000 ~ "2",
Salud > 1000 & Salud <= 2000 ~ "3",
Salud > 2000 & Salud <= 4000 ~ "4",
Salud > 4000 & Salud <= 6000 ~ "5",
Salud > 6000 ~ "6"
Salud
)
)<- mean_rango %>% mutate(Descripción_Salud =
mean_rango case_when(Salud >= 24 & Salud <= 500 ~ "24 - 500",
> 500 & Salud <= 1000 ~ "500 - 1000",
Salud > 1000 & Salud <= 2000 ~ "1000 - 2000",
Salud > 2000 & Salud <= 4000 ~ "2000 - 4000",
Salud > 4000 & Salud <= 6000 ~ "4000 - 6000",
Salud > 6000 ~ ">6000"
Salud
)
)
<- mean_rango %>% mutate(Categoría_Carabineros =
mean_rango case_when(Carabineros >= 17 & Carabineros <= 500 ~ "1",
> 500 & Carabineros <= 1000 ~ "2",
Carabineros > 1000 & Carabineros <= 2000 ~ "3",
Carabineros > 2000 & Carabineros <= 5000 ~ "4",
Carabineros > 5000 & Carabineros <= 10000 ~ "5",
Carabineros > 10000 ~ "6"
Carabineros
)
)<- mean_rango %>% mutate(Descripción_Carabineros =
mean_rango case_when(Carabineros >= 17 & Carabineros <= 500 ~ "18 - 500",
> 500 & Carabineros <= 1000 ~ "500 - 1000",
Carabineros > 1000 & Carabineros <= 2000 ~ "1000 - 2000",
Carabineros > 2000 & Carabineros <= 4000 ~ "2000 - 5000",
Carabineros > 5000 & Carabineros <= 6000 ~ "5000 - 10000",
Carabineros > 10000 ~ ">10000"
Carabineros
)
)
<- mean_rango %>% mutate(Categoría_Parvularia =
mean_rango case_when(Parvularia >= 12 & Parvularia <= 100 ~ "1",
> 100 & Parvularia <= 250 ~ "2",
Parvularia > 250 & Parvularia <= 500 ~ "3",
Parvularia > 500 & Parvularia <= 1000 ~ "4",
Parvularia > 1000 & Parvularia <= 5000 ~ "5",
Parvularia > 5000 ~ "6"
Parvularia
)
)<- mean_rango %>% mutate(Descripción_Parvularia =
mean_rango case_when(Parvularia >= 12 & Parvularia <= 100 ~ "12 - 100",
> 100 & Parvularia <= 250 ~ "100 - 250",
Parvularia > 250 & Parvularia <= 500 ~ "250 - 500",
Parvularia > 500 & Parvularia <= 1000 ~ "500 - 1000",
Parvularia > 1000 & Parvularia <= 5000 ~ "1000 -5000",
Parvularia > 5000 ~ ">5000"
Parvularia
)
)
<- mean_rango %>% mutate(Categoría_EducaciónSuperior =
mean_rango case_when(EducaciónSuperior >= 17 & EducaciónSuperior <= 1000 ~ "1",
> 1000 & EducaciónSuperior <= 2500 ~ "2",
EducaciónSuperior > 2500 & EducaciónSuperior <= 10000 ~ "3",
EducaciónSuperior > 10000 & EducaciónSuperior <= 35000 ~ "4",
EducaciónSuperior > 35000 & EducaciónSuperior <= 75000 ~ "5",
EducaciónSuperior > 75000 ~ "6"
EducaciónSuperior
)
)<- mean_rango %>% mutate(Descripción_EducaciónSuperior =
mean_rango case_when(EducaciónSuperior >= 17 & EducaciónSuperior <= 1000 ~ "17 - 1000",
> 1000 & EducaciónSuperior <= 2500 ~ "1000 - 2500",
EducaciónSuperior > 2500 & EducaciónSuperior <= 10000 ~ "2500 - 10000",
EducaciónSuperior > 10000 & EducaciónSuperior <= 35000 ~ "10000 - 35000",
EducaciónSuperior > 35000 & EducaciónSuperior <= 75000 ~ "35000 - 75000",
EducaciónSuperior > 75000 ~ ">75000"
EducaciónSuperior
)
)
<- mean_rango %>% mutate(Categoría_Educacion_Basica_y_Media =
mean_rango case_when(Educacion_Basica_y_Media >= 14 & Educacion_Basica_y_Media <= 100 ~ "1",
> 100 & Educacion_Basica_y_Media <= 250 ~ "2",
Educacion_Basica_y_Media > 250 & Educacion_Basica_y_Media <= 500 ~ "3",
Educacion_Basica_y_Media > 500 & Educacion_Basica_y_Media <= 1000 ~ "4",
Educacion_Basica_y_Media > 1000 & Educacion_Basica_y_Media <= 2000 ~ "5",
Educacion_Basica_y_Media > 2000 ~ "6"
Educacion_Basica_y_Media
)
)<- mean_rango %>% mutate(Descripción_Educacion_Basica_y_Media =
mean_rango case_when(Educacion_Basica_y_Media >= 14 & Educacion_Basica_y_Media <= 100 ~ "14 - 100",
> 100 & Educacion_Basica_y_Media <= 250 ~ "100 -250",
Educacion_Basica_y_Media > 250 & Educacion_Basica_y_Media <= 500 ~ "250 - 500",
Educacion_Basica_y_Media > 500 & Educacion_Basica_y_Media <= 1000 ~ "500 - 1000",
Educacion_Basica_y_Media > 1000 & Educacion_Basica_y_Media <= 2000 ~ "1000 - 2000",
Educacion_Basica_y_Media > 2000 ~ ">2000"
Educacion_Basica_y_Media
)
)
<- mean_rango %>% mutate(Categoría_SdeI_Turistico =
mean_rango case_when(SdeI_Turistico >= 15 & SdeI_Turistico <= 500 ~ "1",
> 500 & SdeI_Turistico <= 1000 ~ "2",
SdeI_Turistico > 1000 & SdeI_Turistico <= 3000 ~ "3",
SdeI_Turistico > 3000 & SdeI_Turistico <= 6000 ~ "4",
SdeI_Turistico > 6000 & SdeI_Turistico <= 15000 ~ "5",
SdeI_Turistico > 15000 ~ "6"
SdeI_Turistico
)
)<- mean_rango %>% mutate(Descripción_SdeI_Turistico =
mean_rango case_when(SdeI_Turistico >= 15 & SdeI_Turistico <= 500 ~ "15 -500",
> 500 & SdeI_Turistico <= 1000 ~ "500 - 1000",
SdeI_Turistico > 1000 & SdeI_Turistico <= 3000 ~ "1000 - 3000",
SdeI_Turistico > 3000 & SdeI_Turistico <= 6000 ~ "3000 - 6000",
SdeI_Turistico > 6000 & SdeI_Turistico <= 15000 ~ "6000 - 15000",
SdeI_Turistico > 15000 ~ ">15000"
SdeI_Turistico
)
)
<- mean_rango %>% mutate(Categoría_Monumento_Nacional =
mean_rango case_when(Monumento_Nacional >= 14 & Monumento_Nacional <= 2500 ~ "1",
> 2500 & Monumento_Nacional <= 10000 ~ "2",
Monumento_Nacional > 10000 & Monumento_Nacional <= 20000 ~ "3",
Monumento_Nacional > 20000 & Monumento_Nacional <= 30000 ~ "4",
Monumento_Nacional > 30000 & Monumento_Nacional <= 50000 ~ "5",
Monumento_Nacional > 107026 ~ "6"
Monumento_Nacional
)
)<- mean_rango %>% mutate(Descripción_Monumento_Nacional =
mean_rango case_when(Monumento_Nacional >= 14 & Monumento_Nacional <= 2500 ~ "14 - 2500",
> 2500 & Monumento_Nacional <= 10000 ~ "2500 - 10000",
Monumento_Nacional > 10000 & Monumento_Nacional <= 20000 ~ "10000 - 20000",
Monumento_Nacional > 20000 & Monumento_Nacional <= 30000 ~ "20000 - 30000",
Monumento_Nacional > 30000 & Monumento_Nacional <= 50000 ~ "30000 - 50000",
Monumento_Nacional > 107026 ~ ">107026"
Monumento_Nacional
)
)
<- mean_rango %>% mutate(Categoría_SdeInteresPoblacional =
mean_rango case_when(SdeInteresPoblacional >= 8 & SdeInteresPoblacional <= 250 ~ "1",
> 250 & SdeInteresPoblacional <= 750 ~ "2",
SdeInteresPoblacional > 750 & SdeInteresPoblacional <= 1500 ~ "3",
SdeInteresPoblacional > 1500 & SdeInteresPoblacional <= 5000 ~ "4",
SdeInteresPoblacional > 5000 & SdeInteresPoblacional <= 10000 ~ "5",
SdeInteresPoblacional > 24588 ~ "6"
SdeInteresPoblacional
)
)
<- mean_rango %>% mutate(Descripción_SdeInteresPoblacional =
mean_rango case_when(SdeInteresPoblacional >= 8 & SdeInteresPoblacional <= 250 ~ "8 - 250",
> 250 & SdeInteresPoblacional <= 750 ~ "250 - 750",
SdeInteresPoblacional > 750 & SdeInteresPoblacional <= 1500 ~ "750 - 1500",
SdeInteresPoblacional > 1500 & SdeInteresPoblacional <= 5000 ~ "1500 - 5000",
SdeInteresPoblacional > 5000 & SdeInteresPoblacional <= 10000 ~ "5000 - 5000",
SdeInteresPoblacional > 24588 ~ ">24588
SdeInteresPoblacional "
) )
head(mean_rango)
## # A tibble: 6 x 26
## COD_ZonLoc COD_MzEnt Salud Carabineros Parvularia EducaciónSuperior
## <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 3101061006 3101061006028 669. 732. 435. 653.
## 2 3101071001 3101071001500 393. 904. 310. 651.
## 3 3101021001 3101021001008 97.4 390. 236. 424.
## 4 3101071001 3101071001024 442. 943. 358. 636.
## 5 3101071001 3101071001004 517. 874. 408. 623.
## 6 3101071001 3101071001026 318. 830. 234. 664.
## # ... with 20 more variables: Educacion_Basica_y_Media <dbl>,
## # SdeI_Turistico <dbl>, Monumento_Nacional <dbl>,
## # SdeInteresPoblacional <dbl>, Categoría_Salud <chr>,
## # Descripción_Salud <chr>, Categoría_Carabineros <chr>,
## # Descripción_Carabineros <chr>, Categoría_Parvularia <chr>,
## # Descripción_Parvularia <chr>, Categoría_EducaciónSuperior <chr>,
## # Descripción_EducaciónSuperior <chr>, ...
# writexl::write_xlsx(mean_rango,"rangos.xlsx")
Veamos los primeros 1000 registros
56+ 124 +354+ 20
## [1] 554
3.2 union de las tablas