Abstract
Construímos un código para los registros, tablas de contingencia básicas para las preguntas del Censo del 2017 y algunos ejercicios sobre algunas comunas.
library("rio")
x <- import("Microdato_Censo2017-Hogares.csv")
Hacemos un subset para trabajar mas rápido:
# x <- x[c(1:10000),]
El código se construye uniendo los siguientes elementos de la base de datos
COMUNA : Se mantiene igual. DC : Siempre debe tener dos digitos anteponiendo un cero si tiene uno. AREA : Se mantiene igual. ZC_LOC : Siempre debe tener tres digitos anteponiendo un cero si tiene dos y dos si tiene uno.
head(unique(x$COMUNA),140)
## [1] 15202 15201 15102 15101 14204 14203 14202 14201 14108 14107 14106 14105
## [13] 14104 14103 14102 14101 13605 13604 13603 13602 13601 13505 13504 13503
## [25] 13502 13501 13404 13403 13402 13401 13303 13302 13301 13203 13202 13201
## [37] 13132 13131 13130 13129 13128 13127 13126 13125 13124 13123 13122 13121
## [49] 13120 13119 13118 13117 13116 13115 13114 13113 13112 13111 13110 13109
## [61] 13108 13107 13106 13105 13104 13103 13102 13101 12402 12401 12303 12302
## [73] 12301 12202 12201 12104 12103 12102 12101 11402 11401 11303 11302 11301
## [85] 11203 11202 11201 11102 11101 10404 10403 10402 10401 10307 10306 10305
## [97] 10304 10303 10302 10301 10210 10209 10208 10207 10206 10205 10204 10203
## [109] 10202 10201 10109 10108 10107 10106 10105 10104 10103 10102 10101 9211
## [121] 9210 9209 9208 9207 9206 9205 9204 9203 9202 9201 9121 9120
## [133] 9119 9118 9117 9116 9115 9114 9113 9112
# recogemos el campo Comuna:
codigos <- x$COMUNA
# construimos una secuencia llamada rango del 1 al total de filas del dataset:
rango <- seq(1:nrow(x))
# Creamos un string que agrega un cero a todos los registros:
cadena<- paste("0",codigos[rango], sep = "")
# El string cadena tiene o 5 o 6 digitos, los cuales siempre deben ser siempre 5 agregandole un cero al inicio de los que tienen 4.
# Para ello extraemos un substring de la cadena sobre todas las filas (rangos) comenzando desde el primero o el segundo y llegando siempre al 6.
cadena <- substr(cadena,(nchar(cadena)[rango])-(4),6)
codigos <- as.data.frame(codigos)
cadena <- as.data.frame(cadena)
comuna_corr <- cbind(codigos,cadena)
lko <- unique(comuna_corr$cadena)
kbl(lko ) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
kable_paper() %>%
scroll_box(width = "30%", height = "300px")
x |
---|
15202 |
15201 |
15102 |
15101 |
14204 |
14203 |
14202 |
14201 |
14108 |
14107 |
14106 |
14105 |
14104 |
14103 |
14102 |
14101 |
13605 |
13604 |
13603 |
13602 |
13601 |
13505 |
13504 |
13503 |
13502 |
13501 |
13404 |
13403 |
13402 |
13401 |
13303 |
13302 |
13301 |
13203 |
13202 |
13201 |
13132 |
13131 |
13130 |
13129 |
13128 |
13127 |
13126 |
13125 |
13124 |
13123 |
13122 |
13121 |
13120 |
13119 |
13118 |
13117 |
13116 |
13115 |
13114 |
13113 |
13112 |
13111 |
13110 |
13109 |
13108 |
13107 |
13106 |
13105 |
13104 |
13103 |
13102 |
13101 |
12402 |
12401 |
12303 |
12302 |
12301 |
12202 |
12201 |
12104 |
12103 |
12102 |
12101 |
11402 |
11401 |
11303 |
11302 |
11301 |
11203 |
11202 |
11201 |
11102 |
11101 |
10404 |
10403 |
10402 |
10401 |
10307 |
10306 |
10305 |
10304 |
10303 |
10302 |
10301 |
10210 |
10209 |
10208 |
10207 |
10206 |
10205 |
10204 |
10203 |
10202 |
10201 |
10109 |
10108 |
10107 |
10106 |
10105 |
10104 |
10103 |
10102 |
10101 |
09211 |
09210 |
09209 |
09208 |
09207 |
09206 |
09205 |
09204 |
09203 |
09202 |
09201 |
09121 |
09120 |
09119 |
09118 |
09117 |
09116 |
09115 |
09114 |
09113 |
09112 |
09111 |
09110 |
09109 |
09108 |
09107 |
09106 |
09105 |
09104 |
09103 |
09102 |
09101 |
16109 |
16207 |
16305 |
16108 |
16304 |
16301 |
16206 |
16201 |
16107 |
16205 |
16106 |
16105 |
16303 |
16204 |
16104 |
16103 |
16302 |
16203 |
16202 |
16102 |
16101 |
08314 |
08313 |
08312 |
08311 |
08310 |
08309 |
08308 |
08307 |
08306 |
08305 |
08304 |
08303 |
08302 |
08301 |
08207 |
08206 |
08205 |
08204 |
08203 |
08202 |
08201 |
08112 |
08111 |
08110 |
08109 |
08108 |
08107 |
08106 |
08105 |
08104 |
08103 |
08102 |
08101 |
07408 |
07407 |
07406 |
07405 |
07404 |
07403 |
07402 |
07401 |
07309 |
07308 |
07307 |
07306 |
07305 |
07304 |
07303 |
07302 |
07301 |
07203 |
07202 |
07201 |
07110 |
07109 |
07108 |
07107 |
07106 |
07105 |
07104 |
07103 |
07102 |
07101 |
06310 |
06309 |
06308 |
06307 |
06306 |
06305 |
06304 |
06303 |
06302 |
06301 |
06206 |
06205 |
06204 |
06203 |
06202 |
06201 |
06117 |
06116 |
06115 |
06114 |
06113 |
06112 |
06111 |
06110 |
06109 |
06108 |
06107 |
06106 |
06105 |
06104 |
06103 |
06102 |
06101 |
05804 |
05803 |
05802 |
05801 |
05706 |
05705 |
05704 |
05703 |
05702 |
05701 |
05606 |
05605 |
05604 |
05603 |
05602 |
05601 |
05506 |
05504 |
05503 |
05502 |
05501 |
05405 |
05404 |
05403 |
05402 |
05401 |
05304 |
05303 |
05302 |
05301 |
05201 |
05109 |
05107 |
05105 |
05104 |
05103 |
05102 |
05101 |
04305 |
04304 |
04303 |
04302 |
04301 |
04204 |
04203 |
04202 |
04201 |
04106 |
04105 |
04104 |
04103 |
04102 |
04101 |
03304 |
03303 |
03302 |
03301 |
03202 |
03201 |
03103 |
03102 |
03101 |
02302 |
02301 |
02203 |
02202 |
02201 |
02104 |
02103 |
02102 |
02101 |
01405 |
01404 |
01403 |
01402 |
01401 |
01107 |
01101 |
unique(x$DC)
## [1] 1 2 3 4 99 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
## [26] 25 26 27 28 29 30 31 32 33
Debemos agregar un cero a la izquierda a todos los códigos DC que contengan un dígito:
# Le asignamos a la variable codigos, la variable DC del dataframe x:
codigos <- x$DC
# Creamos una secuencia llamada rango con toda la cantidad de registros del dataframe:
rango <- seq(1:nrow(x))
# Creamos un string que añade un cero a todos los codigos quedando algunos con dos dígitos y otros con tres:
cadena <- paste("0",codigos[rango], sep = "")
# Ésta es la línea más importante del código.
# Si el string entrante contiene tres digitos, la función substr comenzaría desde la posición 2 a la 3, y si tiene 2, comenzaría desde la posición 1 a la 3, pero como no existe posición tres, llega a la 2.
cadena <- substr(cadena,(nchar(cadena)[rango])-(1),(nchar(cadena)[rango]))
codigos <- as.data.frame(codigos)
cadena <- as.data.frame(cadena)
dc <- cbind(codigos,cadena)
unique(dc$cadena)
## [1] "01" "02" "03" "04" "99" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14"
## [16] "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29"
## [31] "30" "31" "32" "33"
a002 <- unique(x$ZC_LOC)
kbl(a002) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
kable_paper() %>%
scroll_box(width = "30%", height = "300px")
x |
---|
6 |
8 |
12 |
15 |
4 |
5 |
9 |
11 |
901 |
1 |
2 |
10 |
14 |
13 |
999 |
7 |
21 |
3 |
20 |
17 |
16 |
39 |
33 |
38 |
48 |
23 |
35 |
43 |
50 |
28 |
32 |
37 |
42 |
49 |
24 |
26 |
29 |
36 |
40 |
46 |
47 |
19 |
22 |
25 |
34 |
45 |
18 |
27 |
30 |
31 |
44 |
54 |
55 |
41 |
52 |
53 |
51 |
61 |
69 |
60 |
57 |
72 |
71 |
64 |
65 |
70 |
74 |
63 |
73 |
75 |
67 |
56 |
58 |
76 |
66 |
59 |
62 |
68 |
78 |
80 |
77 |
79 |
81 |
87 |
88 |
83 |
84 |
82 |
85 |
86 |
89 |
93 |
91 |
90 |
105 |
113 |
95 |
103 |
108 |
99 |
104 |
107 |
111 |
112 |
100 |
96 |
101 |
92 |
94 |
98 |
106 |
109 |
110 |
115 |
122 |
123 |
124 |
116 |
120 |
114 |
117 |
119 |
121 |
Deben todos los codigos poseer tres dígitos, agregándole un cero a los que tienen 2 y dos ceros a los que tienen uno.
codigos <- x$ZC_LOC
rango <- seq(1:nrow(x))
cadena<- paste("00",codigos[rango], sep = "")
cadena <- substr(cadena,(nchar(cadena)[rango])-(2),nchar(cadena)[rango])
codigos <- as.data.frame(codigos)
cadena <- as.data.frame(cadena)
cadena_c <- cbind(codigos,cadena)
unique(cadena_c$cadena)
## [1] "006" "008" "012" "015" "004" "005" "009" "011" "901" "001" "002" "010"
## [13] "014" "013" "999" "007" "021" "003" "020" "017" "016" "039" "033" "038"
## [25] "048" "023" "035" "043" "050" "028" "032" "037" "042" "049" "024" "026"
## [37] "029" "036" "040" "046" "047" "019" "022" "025" "034" "045" "018" "027"
## [49] "030" "031" "044" "054" "055" "041" "052" "053" "051" "061" "069" "060"
## [61] "057" "072" "071" "064" "065" "070" "074" "063" "073" "075" "067" "056"
## [73] "058" "076" "066" "059" "062" "068" "078" "080" "077" "079" "081" "087"
## [85] "088" "083" "084" "082" "085" "086" "089" "093" "091" "090" "105" "113"
## [97] "095" "103" "108" "099" "104" "107" "111" "112" "100" "096" "101" "092"
## [109] "094" "098" "106" "109" "110" "115" "122" "123" "124" "116" "120" "114"
## [121] "117" "119" "121"
x$clave <- paste(x$COMUNA, dc$cadena, x$AREA, cadena_c$cadena, sep="")
Recordemos que:
COMUNA : Se mantiene igual.
DC : Siempre debe tener dos digitos anteponiendo un cero si tiene uno.
AREA : Se mantiene igual.
ZC_LOC : Siempre debe tener tres digitos anteponiendo un cero si tiene dos y dos si tiene uno.
tablamadre <- head(x,50)
kbl(tablamadre) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
kable_paper() %>%
scroll_box(width = "100%", height = "300px")
REGION | PROVINCIA | COMUNA | DC | AREA | ZC_LOC | ID_ZONA_LOC | NVIV | NHOGAR | TIPO_HOGAR | TIPO_OPERATIVO | clave |
---|---|---|---|---|---|---|---|---|---|---|---|
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 1 | 1 | 1 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 3 | 1 | 6 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 9 | 1 | 4 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 10 | 1 | 1 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 13 | 1 | 4 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 16 | 1 | 3 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 17 | 1 | 5 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 18 | 1 | 1 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 19 | 1 | 1 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 20 | 1 | 3 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 25 | 1 | 2 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 28 | 1 | 5 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 33 | 1 | 6 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 36 | 1 | 6 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 38 | 1 | 1 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 39 | 1 | 3 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 6 | 13225 | 43 | 1 | 6 | 1 | 15202012006 |
15 | 152 | 15202 | 1 | 2 | 8 | 13910 | 5 | 1 | 4 | 1 | 15202012008 |
15 | 152 | 15202 | 1 | 2 | 8 | 13910 | 7 | 1 | 2 | 1 | 15202012008 |
15 | 152 | 15202 | 1 | 2 | 8 | 13910 | 8 | 1 | 3 | 1 | 15202012008 |
15 | 152 | 15202 | 1 | 2 | 8 | 13910 | 19 | 1 | 1 | 1 | 15202012008 |
15 | 152 | 15202 | 1 | 2 | 8 | 13910 | 21 | 1 | 3 | 1 | 15202012008 |
15 | 152 | 15202 | 1 | 2 | 8 | 13910 | 22 | 1 | 1 | 1 | 15202012008 |
15 | 152 | 15202 | 1 | 2 | 8 | 13910 | 30 | 1 | 1 | 1 | 15202012008 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 3 | 1 | 6 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 9 | 1 | 1 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 19 | 1 | 1 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 20 | 1 | 1 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 21 | 1 | 2 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 24 | 1 | 3 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 27 | 1 | 1 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 31 | 1 | 1 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 12 | 8394 | 42 | 1 | 4 | 1 | 15202012012 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 2 | 1 | 1 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 8 | 1 | 98 | 8 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 9 | 1 | 1 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 12 | 1 | 1 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 15 | 1 | 2 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 16 | 1 | 1 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 19 | 1 | 7 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 22 | 1 | 1 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 27 | 1 | 7 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 28 | 1 | 2 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 29 | 1 | 6 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 32 | 1 | 98 | 8 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 46 | 1 | 7 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 47 | 1 | 6 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 49 | 1 | 1 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 51 | 1 | 1 | 1 | 15202012015 |
15 | 152 | 15202 | 1 | 2 | 15 | 4094 | 52 | 1 | 7 | 1 | 15202012015 |
unicas <- unique(x$clave)
codigos_unicos <- head(unicas,50)
kbl(codigos_unicos) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
kable_paper() %>%
scroll_box(width = "100%", height = "300px")
x |
---|
15202012006 |
15202012008 |
15202012012 |
15202012015 |
15202022004 |
15202022005 |
15202022009 |
15202022011 |
15202022901 |
15202032001 |
15202032002 |
15202032010 |
15202032014 |
15202032901 |
15202042013 |
15202042901 |
15202992999 |
15201011001 |
15201012901 |
15201022002 |
15201032006 |
15201032007 |
15201032901 |
15201042009 |
15201042021 |
15201042901 |
15201052001 |
15201052003 |
15201052012 |
15201052013 |
15201052020 |
15201052901 |
15201062005 |
15201062010 |
15201062017 |
15201062901 |
15201072901 |
15201082004 |
15201991999 |
15102012002 |
15102012003 |
15102022007 |
15102032005 |
15102032008 |
15102032901 |
15102042001 |
15102052004 |
15102052006 |
15101011001 |
15101011002 |
El Censo 2017 contempla dos preguntas:
tabla_TIPO_HOGAR <- table(x$clave, x$TIPO_HOGAR, useNA = "no")
colnames(tabla_TIPO_HOGAR) <- c("Hogar unipersonal","Hogar nuclear monoparental","Hogar nuclear biparental sin hijos","Hogar nuclear biparental con hijos","Hogar compuesto","Hogar extenso","Hogar sin núcleo","No aplica
")
write.table(tabla_TIPO_HOGAR,"tabla_TIPO_OPERATIVO_df.txt", col.name = NA)
tabla <- read.table("tabla_TIPO_OPERATIVO_df.txt")
# tabla <- as.table(tabla_TIPO_OPERATIVO)
tabla_names <- tabla[1,]
colnames(tabla) <- tabla_names
tabla <- tabla[-1,]
names(tabla)[1] <- "Clave"
write_xlsx(tabla, "tablas_2017_hogares/tabla_TIPO_HOGAR.xlsx")
a001 <- head(tabla_TIPO_HOGAR,5)
kbl(a001) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
kable_paper() %>%
scroll_box(width = "100%", height = "300px")
Hogar unipersonal | Hogar nuclear monoparental | Hogar nuclear biparental sin hijos | Hogar nuclear biparental con hijos | Hogar compuesto | Hogar extenso | Hogar sin núcleo | No aplica | |
---|---|---|---|---|---|---|---|---|
10101011001 | 84 | 8 | 35 | 16 | 4 | 16 | 23 | 19 |
10101011002 | 301 | 115 | 142 | 186 | 41 | 178 | 104 | 5 |
10101021001 | 297 | 155 | 177 | 278 | 50 | 262 | 122 | 6 |
10101021002 | 94 | 33 | 63 | 44 | 12 | 53 | 44 | 25 |
10101021003 | 236 | 82 | 88 | 124 | 35 | 132 | 99 | 32 |
tabla_TIPO_OPERATIVO <- table(x$clave, x$TIPO_OPERATIVO, useNA = "no")
colnames(tabla_TIPO_OPERATIVO) <- c("Hogar en vivienda particular","Vivienda colectiva (no es hogar)","Operativo personas en tránsito (no es hogar)","Operativo calle (no es hogar)")
write.table(tabla_TIPO_OPERATIVO,"tabla_TIPO_OPERATIVO_df.txt", col.name = NA)
tabla <- read.table("tabla_TIPO_OPERATIVO_df.txt")
# tabla <- as.table(tabla_TIPO_OPERATIVO)
tabla_names <- tabla[1,]
colnames(tabla) <- tabla_names
tabla <- tabla[-1,]
names(tabla)[1] <- "Clave"
write_xlsx(tabla, "tablas_2017_hogares/tabla_TIPO_OPERATIVO.xlsx")
a001 <- head(tabla_TIPO_OPERATIVO,5)
kbl(a001) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
kable_paper() %>%
scroll_box(width = "100%", height = "300px")
Hogar en vivienda particular | Vivienda colectiva (no es hogar) | Operativo personas en tránsito (no es hogar) | Operativo calle (no es hogar) | |
---|---|---|---|---|
10101011001 | 186 | 19 | 0 | 0 |
10101011002 | 1067 | 5 | 0 | 0 |
10101021001 | 1341 | 6 | 0 | 0 |
10101021002 | 343 | 25 | 0 | 0 |
10101021003 | 796 | 32 | 0 | 0 |