# install.packages("haven")   # si no lo tienes aún
# install.packages("dplyr")   # para manipulación
# install.packages("janitor") # opcional, limpiar nombres de variables
# install.packages("stringr")
# install.packages("convey")
# install.packages("survey", dependencies = TRUE)
# install.packages("ggplot2")
# install.packages("scales")
library(stringr)
## Warning: package 'stringr' was built under R version 4.4.3
library(haven)
## Warning: package 'haven' was built under R version 4.4.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(janitor)
## Warning: package 'janitor' was built under R version 4.4.3
## 
## Adjuntando el paquete: 'janitor'
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
library(convey)
## Warning: package 'convey' was built under R version 4.4.3
library(survey)
## Warning: package 'survey' was built under R version 4.4.3
## Cargando paquete requerido: grid
## Cargando paquete requerido: Matrix
## Cargando paquete requerido: survival
## 
## Adjuntando el paquete: 'survey'
## The following object is masked from 'package:graphics':
## 
##     dotchart
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
library(scales)
## Warning: package 'scales' was built under R version 4.4.3
# # Ruta al archivo .sav
# ruta <- "Base de datos Casen 2022 SPSS_18 marzo 2024.sav"
# 
# # Lectura con haven
# casen2022 <- read_sav(ruta) |> 
#   janitor::clean_names()  # opcional: convierte a snake_case los nombres

Guardar en formato más liviano

# saveRDS(casen2022, "casen2022_raw.rds")
# Para reabrirlo después:
casen2022 <- readRDS("casen2022_raw.rds")

Inspección inicial

# Dimensiones
dim(casen2022)
## [1] 202231    918
# Variables disponibles
names(casen2022)
##   [1] "id_vivienda"        "folio"              "id_persona"        
##   [4] "region"             "area"               "cod_upm"           
##   [7] "nse"                "estrato"            "hogar"             
##  [10] "expr"               "expr_osig"          "varstrat"          
##  [13] "varunit"            "fecha_entrev"       "p1"                
##  [16] "p2"                 "p3"                 "p4"                
##  [19] "p9"                 "p10"                "p11"               
##  [22] "tot_per_h"          "h1"                 "edad"              
##  [25] "mes_nac_nna"        "ano_nac_nna"        "sexo"              
##  [28] "pco1_a"             "pco1_b"             "pco1"              
##  [31] "h5_cp"              "h5_sp"              "h5_b1_1"           
##  [34] "h5_b1_2"            "h5a_2"              "h5_b2_1"           
##  [37] "h5_b2_2"            "h5a_3"              "h5_b3_1"           
##  [40] "h5_b3_2"            "h5a_4"              "h5b"               
##  [43] "ecivil"             "h5_10"              "h5_1a"             
##  [46] "h5_1b"              "h5_20"              "h5_2"              
##  [49] "n_nucleos"          "nucleo"             "pco2_a"            
##  [52] "pco2_b"             "pco2"               "h7a"               
##  [55] "h7b"                "h7c"                "h7d"               
##  [58] "h7e"                "h7f"                "informante"        
##  [61] "e1"                 "e3"                 "e4a"               
##  [64] "e4a_esp"            "e5a"                "e5a_esp"           
##  [67] "e5b"                "e6a_asiste"         "e6a_no_asiste"     
##  [70] "e6a"                "e6b_asiste"         "e6b_no_asiste"     
##  [73] "e6b"                "e6c_completo"       "e6d_preg"          
##  [76] "e6d_postg"          "e7"                 "cinef13_area"      
##  [79] "cinef13_subarea"    "e8"                 "e9nom"             
##  [82] "e9dir"              "e9com_cod"          "e9pais_cod"        
##  [85] "e9rbd"              "e9rbd_sup"          "e9dv"              
##  [88] "e9depen"            "e10"                "e11"               
##  [91] "e12a"               "e12b"               "e12c"              
##  [94] "e12d"               "e12e"               "e13a"              
##  [97] "e13b_1"             "e13b_2"             "e13b_3"            
## [100] "e13b_4"             "e13b_5"             "e13b_6"            
## [103] "e13b_7"             "e13b_8"             "e13b_9"            
## [106] "e13b_10"            "e13b_11"            "e13b1"             
## [109] "e13b2"              "e13b_esp1"          "e13b_esp2"         
## [112] "e14a"               "e14b"               "e14c"              
## [115] "e14d"               "e14e"               "e16"               
## [118] "e18"                "o1"                 "o2"                
## [121] "o3"                 "o4"                 "o5"                
## [124] "o6"                 "o7"                 "o7_esp"            
## [127] "o8"                 "o9a"                "o9b"               
## [130] "oficio1_08"         "oficio4_08"         "o10"               
## [133] "o11"                "o12"                "o14"               
## [136] "o15"                "o16"                "o19"               
## [139] "o18"                "o20"                "o21"               
## [142] "o22"                "o23"                "o24"               
## [145] "rama1_sub"          "rama4_sub"          "rama1"             
## [148] "rama4"              "o25"                "o26a"              
## [151] "o26b"               "o26c"               "o26d"              
## [154] "o28a_hr"            "o28a_min"           "o28b"              
## [157] "o28c"               "o28c_esp"           "o28d"              
## [160] "o28e"               "o29"                "o30"               
## [163] "o31"                "o32"                "o32_esp"           
## [166] "o32b"               "y1"                 "y2_dias"           
## [169] "y2_hrs"             "y3a_preg"           "y3b_preg"          
## [172] "y3c_preg"           "y3d_preg"           "y3e_preg"          
## [175] "y3f_preg"           "y3a"                "y3ap"              
## [178] "y3b"                "y3bp"               "y3c"               
## [181] "y3cp"               "y3d"                "y3dp"              
## [184] "y3e"                "y3ep"               "y3f_esp"           
## [187] "y3f"                "y3fp"               "y4a_preg"          
## [190] "y4b_preg"           "y4c_preg"           "y4d_preg"          
## [193] "y4a"                "y4b"                "y4c"               
## [196] "y4d_esp"            "y4d"                "y5a_preg"          
## [199] "y5b_preg"           "y5c_preg"           "y5d_preg"          
## [202] "y5e_preg"           "y5f_preg"           "y5g_preg"          
## [205] "y5h_preg"           "y5i_preg"           "y5j_preg"          
## [208] "y5k_preg"           "y5l_preg"           "y5a"               
## [211] "y5b"                "y5c"                "y5d"               
## [214] "y5e"                "y5f"                "y5g"               
## [217] "y5h"                "y5i"                "y5j"               
## [220] "y5k"                "y5l"                "y6"                
## [223] "y7"                 "y8"                 "y9"                
## [226] "y10"                "y11_preg"           "y11"               
## [229] "y12a_preg"          "y12a"               "y12b_preg"         
## [232] "y12b"               "y13a_preg"          "y13a"              
## [235] "y13b_preg"          "y13b"               "y13c_preg"         
## [238] "y13c"               "y14a_preg"          "y14a"              
## [241] "y14b_preg"          "y14b"               "y14c_preg"         
## [244] "y14c"               "y15a_preg"          "y15a"              
## [247] "y15b_preg"          "y15b"               "y15c_preg"         
## [250] "y15c"               "y16a_preg"          "y16a"              
## [253] "y16b_preg"          "y16b"               "y17_preg"          
## [256] "y17"                "y18a_preg"          "y18a"              
## [259] "y18b_preg"          "y18b"               "y18c_preg"         
## [262] "y18c"               "y18d_preg"          "y18d_esp"          
## [265] "y18d"               "y19"                "y19t"              
## [268] "y19n"               "y20a"               "y20b"              
## [271] "y20c"               "y20d"               "y20e"              
## [274] "y20amonto"          "y20bmonto"          "y20cmonto"         
## [277] "y20dmonto"          "y20emonto"          "y21_canasta"       
## [280] "y22_preg"           "y22"                "y22amonto"         
## [283] "y22bmonto"          "y22cmonto"          "y22dmonto"         
## [286] "y23a_preg"          "y23a"               "y23b"              
## [289] "y23c"               "y23bmonto"          "y23cmonto"         
## [292] "y24_preg"           "y24"                "y25a_preg"         
## [295] "y25a"               "y25amonto"          "y25b_preg"         
## [298] "y25b"               "y25bmonto"          "y25c"              
## [301] "y25cmonto"          "y25d"               "y25dmonto"         
## [304] "y25ep"              "y25e"               "y25fp"             
## [307] "y25f"               "y25g_preg"          "y25g"              
## [310] "y25h_preg"          "y25hp"              "y25h"              
## [313] "y25i_preg"          "y25imonto"          "y25ip"             
## [316] "y25j_preg"          "y25j"               "y25jmonto"         
## [319] "y26d_hog"           "y26d_preg"          "y26d_integrantes"  
## [322] "y26d_monto"         "y27_preg"           "y27_esp"           
## [325] "y27"                "y28_1b"             "y28_1c"            
## [328] "y28_1d"             "y28_1dmonto"        "y28_1e"            
## [331] "y28_1f"             "y28_1g"             "y28_1h"            
## [334] "y28_1i"             "y28_1j"             "y28j_esp"          
## [337] "y28_2b1"            "y28_2b2"            "y28_3b"            
## [340] "y28_4b"             "y28_1c1"            "y28_1c2"           
## [343] "y28_1c2monto"       "y28_2c1"            "y28_2c2"           
## [346] "y28_2c"             "y28_3c"             "y28_4c"            
## [349] "y28_2e1"            "y28_2e2"            "y28_3e"            
## [352] "y28_4e"             "y28_2f"             "y28_3f"            
## [355] "y28_4f"             "y28_1g1"            "y28_2g1"           
## [358] "y28_2g2"            "y28_2g"             "y28_3g"            
## [361] "y28_4g"             "y28_2h"             "y28_3h"            
## [364] "y28_4h"             "y28_1i1"            "y28_2i1"           
## [367] "y28_2i2"            "y28_2i"             "y28_2j"            
## [370] "y28_3j"             "y28_4j"             "s2"                
## [373] "s2c"                "s3_1"               "s3_2"              
## [376] "s3_3"               "s3_4"               "s3_5"              
## [379] "s3_6"               "s3_7"               "s3_8"              
## [382] "s3_88"              "s3a1"               "s3a2"              
## [385] "s4"                 "s5"                 "s6"                
## [388] "s7"                 "s7_meses"           "s8"                
## [391] "s9a"                "s9b"                "s10"               
## [394] "s11a"               "s11b"               "s12"               
## [397] "s13"                "s13_fonasa"         "s15"               
## [400] "s16"                "s17"                "s17b"              
## [403] "s18"                "s18_esp"            "s19a"              
## [406] "s19b"               "s19c"               "s19d"              
## [409] "s19e"               "s20a_preg"          "s20a"              
## [412] "s20b"               "s21a_preg"          "s21a"              
## [415] "s21b"               "s22a_preg"          "s22a"              
## [418] "s22b"               "s23a_preg"          "s23a"              
## [421] "s23b"               "s24a_preg"          "s24a"              
## [424] "s24b"               "s25a1_preg"         "s25b1"             
## [427] "s25a2_preg"         "s25b2"              "s26a"              
## [430] "s26b_1"             "s26b_2"             "s26b_3"            
## [433] "s26b_4"             "s26b_5"             "s26b_6"            
## [436] "s26b_7"             "s26b_8"             "s26b_88"           
## [439] "s26b_esp"           "s26u"               "s26c"              
## [442] "s27a"               "s27b"               "s27c"              
## [445] "s28"                "s28_esp"            "s29"               
## [448] "s30"                "s30_esp"            "s31_1"             
## [451] "s31_2"              "s31_3"              "s31_4"             
## [454] "s31_5"              "s31_6"              "s31_7"             
## [457] "s32a"               "s32b"               "s32c"              
## [460] "s32d"               "s32e"               "s32f"              
## [463] "s32g"               "s32h"               "s32i"              
## [466] "s32j"               "s33a"               "s33b"              
## [469] "s33c"               "s33d"               "s33e"              
## [472] "s33f"               "s33g"               "s33h"              
## [475] "s33i"               "s33j"               "s34a"              
## [478] "s34b"               "s34c"               "r1a"               
## [481] "r1a_esp"            "r1a_esp_cod"        "r1b"               
## [484] "r1b_comuna_esp"     "r1b_comuna_esp_cod" "r1b_pais_esp"      
## [487] "r1b_pais_esp_cod"   "r1c"                "r1cp"              
## [490] "r2"                 "r2_comuna_esp"      "r2_comuna_esp_cod" 
## [493] "r2_pais_esp"        "r2_pais_esp_cod"    "r3"                
## [496] "r4"                 "r5"                 "r6"                
## [499] "r7a"                "r7b"                "r7c"               
## [502] "r7d"                "r7e"                "r7f"               
## [505] "r7g"                "r7h"                "r7i"               
## [508] "r7j"                "r7k"                "r8a"               
## [511] "r8b"                "r8c"                "r8d"               
## [514] "r8e"                "r8f"                "r8g"               
## [517] "r8h"                "r9a"                "r9b"               
## [520] "r9c"                "r9d"                "r9e"               
## [523] "r9f"                "r9g"                "r9h"               
## [526] "r9i"                "r9j"                "r9k"               
## [529] "r9l"                "r9m"                "r9n"               
## [532] "r9o"                "r9p"                "r9q"               
## [535] "r9r"                "r9s"                "r9t"               
## [538] "r9_esp"             "r11"                "r12a"              
## [541] "r12b"               "r13a"               "r13b"              
## [544] "r14"                "r15"                "r17a"              
## [547] "r17b"               "r17c"               "r17d"              
## [550] "r17e"               "r18"                "v1"                
## [553] "v2"                 "v3"                 "v4"                
## [556] "v5"                 "v6"                 "v7"                
## [559] "v9"                 "v10"                "v11_o1"            
## [562] "v11_o2"             "v12"                "v12mt"             
## [565] "v13"                "v13_propia"         "v13_arrendada"     
## [568] "v13_cedida"         "v13b_1"             "v13b_2"            
## [571] "v13b_3"             "v13b_4"             "v13b_5"            
## [574] "v13b_6"             "v13b_7"             "v14"               
## [577] "v15"                "v16"                "v17"               
## [580] "v18"                "v19"                "v20"               
## [583] "v20_esp"            "v20_red"            "v21"               
## [586] "v22"                "v23"                "v23_sistema"       
## [589] "v23_cajon"          "v24"                "v25"               
## [592] "v26"                "v27a"               "v27b"              
## [595] "v28"                "v29a"               "v29b"              
## [598] "v30"                "v31"                "v32"               
## [601] "v33"                "v34a"               "v34b"              
## [604] "v34c"               "v35a"               "v35b"              
## [607] "v35c"               "v35d"               "v35e"              
## [610] "v35f"               "v35g"               "v35h"              
## [613] "v35i"               "v36a"               "v36b"              
## [616] "v36c"               "v36d"               "v36e"              
## [619] "v37a"               "v37b"               "v37c"              
## [622] "v37d"               "v37e"               "v37f"              
## [625] "v37g"               "v38"                "os_presente"       
## [628] "os1"                "os1_esp"            "genero"            
## [631] "genero_esp"         "trans"              "y0101"             
## [634] "y0301"              "y0302"              "y0303"             
## [637] "y0304"              "y0305"              "y0306"             
## [640] "y0401"              "y0402"              "y0403"             
## [643] "y0404"              "y0501"              "y0502"             
## [646] "y0503"              "y0504"              "y0505"             
## [649] "y0506"              "y0507"              "y0508"             
## [652] "y0509"              "y0510"              "y0511"             
## [655] "y0512"              "yosa"               "y0701"             
## [658] "y0801"              "y0901"              "yosi"              
## [661] "y1101"              "yre1"               "yama"              
## [664] "ymes"               "yfa1"               "yfa2"              
## [667] "ytro"               "yta1"               "yta2"              
## [670] "ydes"               "yah1"               "yah2"              
## [673] "yrut"               "yre2"               "yre3"              
## [676] "yac2"               "yids"               "ydon"              
## [679] "ydim"               "yotr"               "yfam"              
## [682] "y2001"              "y2002"              "y2003"             
## [685] "y2004"              "y2005"              "y2101"             
## [688] "y2201"              "y2202"              "y2203"             
## [691] "y2204"              "y2301"              "y2302"             
## [694] "y2303"              "y2401"              "y2501"             
## [697] "y2502"              "y2503"              "y2504"             
## [700] "y2505"              "y2506"              "y2507"             
## [703] "y2508p"             "y2508"              "y2509"             
## [706] "y2510"              "y2604"              "y2701"             
## [709] "y2804"              "y280201"            "y280202"           
## [712] "y280101"            "y280301"            "y280302"           
## [715] "y2803"              "yinv0101"           "yinv0102"          
## [718] "yinv02"             "ymon0101"           "ymon0102"          
## [721] "ymon02"             "yorf"               "yesp0101"          
## [724] "yesp0102"           "yesp"               "yotp"              
## [727] "yaut"               "ysub1"              "ysub2"             
## [730] "ysub"               "ytot"               "y0101h"            
## [733] "y0301h"             "y0302h"             "y0303h"            
## [736] "y0304h"             "y0305h"             "y0306h"            
## [739] "y0401h"             "y0402h"             "y0403h"            
## [742] "y0404h"             "y0501h"             "y0502h"            
## [745] "y0503h"             "y0504h"             "y0505h"            
## [748] "y0506h"             "y0507h"             "y0508h"            
## [751] "y0509h"             "y0510h"             "y0511h"            
## [754] "y0512h"             "yosah"              "y0701h"            
## [757] "y0801h"             "y0901h"             "yosih"             
## [760] "y1101h"             "yre1h"              "yamah"             
## [763] "ymesh"              "yfa1h"              "yfa2h"             
## [766] "ytroh"              "yta1h"              "yta2h"             
## [769] "ydesh"              "yah1h"              "yah2h"             
## [772] "yruth"              "yre2h"              "yre3h"             
## [775] "yac2h"              "yidsh"              "ydonh"             
## [778] "ydimh"              "yotrh"              "yfamh"             
## [781] "y2001h"             "y2002h"             "y2003h"            
## [784] "y2004h"             "y2005h"             "y2101h"            
## [787] "y2201h"             "y2202h"             "y2203h"            
## [790] "y2204h"             "y2301h"             "y2302h"            
## [793] "y2303h"             "y2401h"             "y2501h"            
## [796] "y2502h"             "y2503h"             "y2504h"            
## [799] "y2505h"             "y2506h"             "y2507h"            
## [802] "y2508h"             "y2509h"             "y2510h"            
## [805] "y2604h"             "y2701h"             "y2804h"            
## [808] "y280201h"           "y280202h"           "y280101h"          
## [811] "y280301h"           "y280302h"           "y2803h"            
## [814] "yinv0101h"          "yinv0102h"          "yinv02h"           
## [817] "ymon0101h"          "ymon0102h"          "ymon02h"           
## [820] "yorfh"              "yesp0101h"          "yesp0102h"         
## [823] "yesph"              "yotph"              "yauth"             
## [826] "ysub1h"             "ysub2h"             "ysubh"             
## [829] "yaimh"              "ytoth"              "ypch"              
## [832] "y0101c"             "y0701c"             "y280201c"          
## [835] "y280301c"           "y2803c"             "yautcor"           
## [838] "ytotcor"            "y0101ch"            "y0701ch"           
## [841] "y280201ch"          "y280301ch"          "y2803ch"           
## [844] "yautcorh"           "yaimcorh"           "ytotcorh"          
## [847] "ypc"                "li"                 "lp"                
## [850] "nae"                "yae"                "pobreza"           
## [853] "yoprcor"            "yoprcorh"           "ytrabajocor"       
## [856] "ytrabajocorh"       "ymonecorh"          "ypchtrabcor"       
## [859] "ypchautcor"         "dau"                "qaut"              
## [862] "dautr"              "qautr"              "hh_d_asis"         
## [865] "hh_d_rez"           "hh_d_esc"           "hh_d_mal"          
## [868] "hh_d_prevs"         "hh_d_acc"           "hh_d_act"          
## [871] "hh_d_cot"           "hh_d_jub"           "hh_d_hacina"       
## [874] "hh_d_estado"        "hh_d_habitab"       "hh_d_servbas"      
## [877] "hh_d_medio"         "hh_d_equipo"        "hh_d_tiempo"       
## [880] "hh_d_accesi"        "hh_d_entorno"       "hh_d_hapoyo"       
## [883] "hh_d_part"          "hh_d_tsocial"       "hh_d_seg"          
## [886] "hh_d_appart"        "pobreza_multi_5d"   "pobreza_multi_4d"  
## [889] "disc_wg"            "depen_grado"        "esc"               
## [892] "desercion"          "rezago"             "asiste"            
## [895] "educ"               "depen"              "activ"             
## [898] "asal"               "contrato"           "cotiza"            
## [901] "lugar_nac"          "pueblos_indigenas"  "n_ocupados"        
## [904] "n_desocupados"      "n_inactivos"        "conyuge_jh"        
## [907] "numper"             "numnuc"             "men18c"            
## [910] "may60c"             "tipohogar"          "tot_hog"           
## [913] "ind_hacina"         "indsan"             "ten_viv"           
## [916] "ten_viv_f"          "allega_ext"         "allega_int"
# Vista de las primeras filas
head(casen2022)
## # A tibble: 6 × 918
##   id_vivienda    folio id_persona region   area    cod_upm nse     estrato hogar
##         <dbl>    <dbl>      <dbl> <dbl+lb> <dbl+l>   <dbl> <dbl+l>   <dbl> <dbl>
## 1     1000901   1.00e8          1 16 [Reg… 2 [Rur…   10009 4 [Baj… 1630324     1
## 2     1000901   1.00e8          2 16 [Reg… 2 [Rur…   10009 4 [Baj… 1630324     1
## 3     1000901   1.00e8          3 16 [Reg… 2 [Rur…   10009 4 [Baj… 1630324     1
## 4     1000902   1.00e8          1 16 [Reg… 2 [Rur…   10009 4 [Baj… 1630324     1
## 5     1000902   1.00e8          2 16 [Reg… 2 [Rur…   10009 4 [Baj… 1630324     1
## 6     1000902   1.00e8          3 16 [Reg… 2 [Rur…   10009 4 [Baj… 1630324     1
## # ℹ 909 more variables: expr <dbl>, expr_osig <dbl>, varstrat <dbl>,
## #   varunit <dbl>, fecha_entrev <date>, p1 <dbl+lbl>, p2 <dbl+lbl>,
## #   p3 <dbl+lbl>, p4 <dbl+lbl>, p9 <dbl>, p10 <dbl+lbl>, p11 <dbl>,
## #   tot_per_h <dbl>, h1 <dbl+lbl>, edad <dbl>, mes_nac_nna <dbl+lbl>,
## #   ano_nac_nna <dbl+lbl>, sexo <dbl+lbl>, pco1_a <dbl+lbl>, pco1_b <dbl+lbl>,
## #   pco1 <dbl+lbl>, h5_cp <dbl+lbl>, h5_sp <dbl+lbl>, h5_b1_1 <dbl>,
## #   h5_b1_2 <dbl>, h5a_2 <dbl+lbl>, h5_b2_1 <dbl>, h5_b2_2 <dbl>, …
# Resumen de ingresos por ejemplo
summary(casen2022$ingreso)
## Warning: Unknown or uninitialised column: `ingreso`.
## Length  Class   Mode 
##      0   NULL   NULL
stringr::str_detect(c("hola","factor_expansion"), "factor")
## [1] FALSE  TRUE
# debería devolver FALSE  TRUE
# 1) Cargar archivo SPSS

casen2022 <- casen2022 |> 
  janitor::clean_names()

# 2) Lista de nombres de todas las variables
vars <- names(casen2022)

# 3) Buscar candidatos a variables de diseño
peso_vars    <- vars[str_detect(vars, regex("factor|expan|peso", ignore_case = TRUE))]
estrato_vars <- vars[str_detect(vars, regex("estrat", ignore_case = TRUE))]
upm_vars     <- vars[str_detect(vars, regex("upm|psu|conglo", ignore_case = TRUE))]

# 4) Buscar candidatos a variables de ingreso
ingreso_vars <- vars[str_detect(vars, regex("ingreso|autonom|trabaj|monet", ignore_case = TRUE))]

# 5) Mostrar resultados
list(
  posibles_pesos   = peso_vars,
  posibles_estrato = estrato_vars,
  posibles_upm     = upm_vars,
  posibles_ingresos = ingreso_vars
)
## $posibles_pesos
## character(0)
## 
## $posibles_estrato
## [1] "estrato"
## 
## $posibles_upm
## [1] "cod_upm"
## 
## $posibles_ingresos
## [1] "ytrabajocor"  "ytrabajocorh"
vars[ stringr::str_detect(vars, regex("exp|fact", ignore_case = TRUE)) ]
## [1] "expr"      "expr_osig"

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

# 2) Variables clave
# Estrato: estrato
# UPM: cod_upm
# Peso: expr
# Ingreso principal: ytrabajocor (persona), ytrabajocorh (hogar)


# 3) Crear diseño muestral
options(survey.lonely.psu = "adjust")
diseño_casen <- svydesign(
ids = ~cod_upm,
strata = ~estrato,
weights = ~expr,
data = casen2022
)


diseño_casen <- convey_prep(diseño_casen)


# 4) Estadísticas básicas
media_ingreso <- svymean(~ytrabajocor, diseño_casen, na.rm = TRUE)
mediana_ingreso <- svyquantile(~ytrabajocor, diseño_casen, 0.5, na.rm = TRUE)


# 5) Desigualdad
gini_ingreso <- svygini(~ytrabajocor, diseño_casen, na.rm = TRUE)
theil_ingreso <- svygei(~ytrabajocor, diseño_casen, epsilon = 1, na.rm = TRUE)
mld_ingreso <- svygei(~ytrabajocor, diseño_casen, epsilon = 0, na.rm = TRUE)


# 6) Quantile ratios / S80/S20
p10 <- svyquantile(~ytrabajocor, diseño_casen, 0.10, na.rm = TRUE)
p90 <- svyquantile(~ytrabajocor, diseño_casen, 0.90, na.rm = TRUE)
s20 <- svyquantile(~ytrabajocor, diseño_casen, 0.20, na.rm = TRUE)
s80 <- svyquantile(~ytrabajocor, diseño_casen, 0.80, na.rm = TRUE)


p90_p10_ratio <- coef(p90)/coef(p10)
s80_s20_ratio <- coef(s80)/coef(s20)


# 7) Resultados finales
resultados <- list(
media = media_ingreso,
mediana = mediana_ingreso,
gini = gini_ingreso,
theil = theil_ingreso,
mld = mld_ingreso,
p90_p10_ratio = p90_p10_ratio,
s80_s20_ratio = s80_s20_ratio
)


# 8) Mostrar resultados
resultados
## $media
##               mean     SE
## ytrabajocor 794509 8093.8
## 
## $mediana
## $ytrabajocor
##     quantile ci.2.5 ci.97.5       se
## 0.5   506667 503333  514167 2763.538
## 
## attr(,"hasci")
## [1] TRUE
## attr(,"class")
## [1] "newsvyquantile"
## 
## $gini
##                gini     SE
## ytrabajocor 0.46195 0.0037
## 
## $theil
##                 gei   SE
## ytrabajocor 0.41664 0.01
## 
## $mld
##                 gei     SE
## ytrabajocor 0.42112 0.0063
## 
## $p90_p10_ratio
## ytrabajocor 
##           8 
## 
## $s80_s20_ratio
## ytrabajocor 
##     3.10559
# 9) Guardar resultados para informe
saveRDS(resultados, "desigualdad_casen2022.rds")
# Suponiendo que ya tienes diseño preparado
# diseño_casen <- svydesign(...) %>% convey_prep()


# Preparar datos para ggplot
casen_plot <- na.omit(casen2022[, c("ytrabajocor", "expr")])


# Calcular percentiles y media
p10 <- coef(svyquantile(~ytrabajocor, diseño_casen, 0.10))
p90 <- coef(svyquantile(~ytrabajocor, diseño_casen, 0.90))
p50 <- coef(svyquantile(~ytrabajocor, diseño_casen, 0.50))
media <- coef(svymean(~ytrabajocor, diseño_casen))
s20 <- coef(svyquantile(~ytrabajocor, diseño_casen, 0.20))
s80 <- coef(svyquantile(~ytrabajocor, diseño_casen, 0.80))


# Filtrar solo valores positivos para escala log
vline_values <- c(media, p50, p10, p90)
vline_values <- vline_values[vline_values > 0]


# Crear gráfico con densidad ponderada y log X
ggplot(casen_plot, aes(x = ytrabajocor)) +
geom_density(aes(weight = expr), fill = "steelblue", alpha = 0.5) +
geom_vline(xintercept = media, color = "green", linetype = "dashed", linewidth = 1) +
geom_vline(xintercept = p50, color = "red", linetype = "dashed", linewidth = 1) +
geom_vline(xintercept = p10, color = "orange", linetype = "dashed", linewidth = 1) +
geom_vline(xintercept = p90, color = "purple", linetype = "dashed", linewidth = 1) +
scale_x_log10(labels = comma) +
labs(title = "Distribución de Ingresos CASEN 2022 (log) con densidad ponderada",
subtitle = "Media (verde), Mediana (roja), P10 (naranja), P90 (morado)",
x = "Ingreso individual (CLP, escala log)",
y = "Densidad ponderada") +
theme_minimal()
## Warning: Removed 1 row containing missing values or values outside the scale range
## (`geom_vline()`).
## Removed 1 row containing missing values or values outside the scale range
## (`geom_vline()`).
## Removed 1 row containing missing values or values outside the scale range
## (`geom_vline()`).

# Suponiendo que ya tienes diseño preparado
# diseño_casen <- svydesign(...) %>% convey_prep()


# Calcular estadísticas básicas
media <- svymean(~ytrabajocor, diseño_casen, na.rm = TRUE)
p50 <- svyquantile(~ytrabajocor, diseño_casen, 0.5, na.rm = TRUE)
gini <- svygini(~ytrabajocor, diseño_casen, na.rm = TRUE)
theil <- svygei(~ytrabajocor, diseño_casen, epsilon = 1, na.rm = TRUE)
mld <- svygei(~ytrabajocor, diseño_casen, epsilon = 0, na.rm = TRUE)
p10 <- svyquantile(~ytrabajocor, diseño_casen, 0.10, na.rm = TRUE)
p90 <- svyquantile(~ytrabajocor, diseño_casen, 0.90, na.rm = TRUE)
s20 <- svyquantile(~ytrabajocor, diseño_casen, 0.20, na.rm = TRUE)
s80 <- svyquantile(~ytrabajocor, diseño_casen, 0.80, na.rm = TRUE)


# Ratios
p90_p10_ratio <- coef(p90)/coef(p10)
s80_s20_ratio <- coef(s80)/coef(s20)


# Generar informe automático
cat("============================================\n")
## ============================================
cat("Informe de Desigualdad CASEN 2022\n")
## Informe de Desigualdad CASEN 2022
cat("============================================\n")
## ============================================
cat(sprintf("Media de ingreso: %.0f CLP\n", coef(media)))
## Media de ingreso: 794509 CLP
cat(sprintf("Mediana de ingreso: %.0f CLP\n", coef(p50)))
## Mediana de ingreso: 506667 CLP
cat(sprintf("Índice de Gini: %.3f\n", coef(gini)))
## Índice de Gini: 0.462
cat(sprintf("Theil (GEI, epsilon=1): %.3f\n", coef(theil)))
## Theil (GEI, epsilon=1): 0.417
cat(sprintf("MLD (GEI, epsilon=0): %.3f\n", coef(mld)))
## MLD (GEI, epsilon=0): 0.421
cat(sprintf("P90/P10: %.2f\n", p90_p10_ratio))
## P90/P10: 8.00
cat(sprintf("S80/S20: %.2f\n", s80_s20_ratio))
## S80/S20: 3.11
cat("\nInterpretación:\n")
## 
## Interpretación:
cat("- La media es mayor que la mediana, indicando que la distribución está sesgada a la derecha (unos pocos ingresos muy altos elevan la media).\n")
## - La media es mayor que la mediana, indicando que la distribución está sesgada a la derecha (unos pocos ingresos muy altos elevan la media).
cat("- El Gini de ~0.46 refleja desigualdad moderada-alta.\n")
## - El Gini de ~0.46 refleja desigualdad moderada-alta.
cat("- Theil y MLD muestran que la desigualdad está relativamente equilibrada entre cola alta y baja.\n")
## - Theil y MLD muestran que la desigualdad está relativamente equilibrada entre cola alta y baja.
cat("- P90/P10 = ", round(p90_p10_ratio,2), " indica que los ingresos del 10% más ricos son 8 veces mayores que los del 10% más pobres.\n")
## - P90/P10 =  8  indica que los ingresos del 10% más ricos son 8 veces mayores que los del 10% más pobres.
cat("- S80/S20 = ", round(s80_s20_ratio,2), " muestra que el 20% más rico concentra 3 veces más ingreso que el 20% más pobre.\n")
## - S80/S20 =  3.11  muestra que el 20% más rico concentra 3 veces más ingreso que el 20% más pobre.

Al calcular media, mediana, Gini, Theil, MLD, P90/P10 y S80/S20 sobre la CASEN completa, estás midiendo la desigualdad de ingresos a nivel nacional, o sea, de toda la población encuestada, ponderando por los factores de expansión. Esto sí tiene valor, pero también tiene limitaciones:

Lo que este análisis refleja

Desigualdad promedio nacional: cómo se distribuyen los ingresos de todas las personas encuestadas en Chile.

Es útil para:

Comparaciones históricas entre años de CASEN.

Comparar regiones si se desagrega por estrato.

Entender la concentración de ingresos a nivel país.

Limitaciones

No analiza subgrupos específicos:

Por ejemplo: desigualdad por región, género, grupo etario, sector urbano/rural, educación, etnia, etc.

La desigualdad puede ser muy diferente dentro de estos subgrupos.

Promedios y Gini nacionales esconden heterogeneidad:

Una región con bajos ingresos puede tener desigualdad diferente a otra más rica.

Al mirar solo el total, se pierde esta información.

Diseño muestral complejo:

Aunque tu análisis pondera correctamente, las estimaciones son promedios ponderados de la encuesta, no censos exactos.

# Preparar diseño
# diseño_casen <- svydesign(...) %>% convey_prep()

subgrupo <- "region"
niveles <- unique(casen2022[[subgrupo]])
resultados <- list()

for (nivel in niveles) {
  sub <- subset(diseño_casen, get(subgrupo) == nivel)
  
  # Calcular medidas
  media <- coef(svymean(~ytrabajocor, sub, na.rm=TRUE))
  mediana <- coef(svyquantile(~ytrabajocor, sub, 0.5, na.rm=TRUE))
  gini <- coef(svygini(~ytrabajocor, sub, na.rm=TRUE))
  theil <- coef(svygei(~ytrabajocor, sub, epsilon=1, na.rm=TRUE))
  mld <- coef(svygei(~ytrabajocor, sub, epsilon=0, na.rm=TRUE))
  p10 <- coef(svyquantile(~ytrabajocor, sub, 0.10, na.rm=TRUE))
  p90 <- coef(svyquantile(~ytrabajocor, sub, 0.90, na.rm=TRUE))
  s20 <- coef(svyquantile(~ytrabajocor, sub, 0.20, na.rm=TRUE))
  s80 <- coef(svyquantile(~ytrabajocor, sub, 0.80, na.rm=TRUE))
  
  # Ratios
  p90_p10 <- p90/p10
  s80_s20 <- s80/s20
  
  resultados[[nivel]] <- data.frame(
    subgrupo = nivel,
    media, mediana, gini, theil, mld,
    p90_p10_ratio = p90_p10,
    s80_s20_ratio = s80_s20
  )
}

# Combinar resultados
final <- do.call(rbind, resultados)
final
##               subgrupo    media mediana      gini     theil       mld
## ytrabajocor          1 710380.5  500000 0.4069538 0.3004204 0.3051094
## ytrabajocor1         2 889103.4  600000 0.4336315 0.3427765 0.3469849
## ytrabajocor2         3 740888.1  550000 0.4052503 0.2930585 0.3250187
## ytrabajocor3         4 748913.5  500000 0.4485198 0.3956392 0.3786897
## ytrabajocor4         5 674815.2  474124 0.4381554 0.3729286 0.3849467
## ytrabajocor5         6 671555.5  500000 0.4011255 0.3214568 0.3279941
## ytrabajocor6         7 561819.4  435000 0.3692668 0.2627670 0.2851171
## ytrabajocor7         8 683578.9  500000 0.4364093 0.3563079 0.4135248
## ytrabajocor8         9 555523.4  430000 0.4307298 0.3537203 0.4337678
## ytrabajocor9        10 642825.8  484167 0.4303801 0.3532582 0.4091999
## ytrabajocor10       11 813253.1  590000 0.4468383 0.3637776 0.4240311
## ytrabajocor11       12 850964.6  604167 0.3998389 0.2973919 0.2996280
## ytrabajocor12       13 941873.3  600000 0.4801698 0.4451981 0.4394862
## ytrabajocor13       14 642750.1  454167 0.4611304 0.4393904 0.4733391
## ytrabajocor14       15 671324.4  500000 0.4143719 0.3149843 0.3213363
## ytrabajocor15       16 552665.0  420000 0.3958328 0.2921798 0.3477129
##               p90_p10_ratio s80_s20_ratio
## ytrabajocor        7.000000      3.083853
## ytrabajocor1       7.678100      3.010835
## ytrabajocor2       7.165835      2.857143
## ytrabajocor3       7.500000      3.333333
## ytrabajocor4       8.635693      3.000000
## ytrabajocor5       6.000000      2.383811
## ytrabajocor6       5.263158      2.358333
## ytrabajocor7       8.711113      3.127777
## ytrabajocor8      10.456670      3.750000
## ytrabajocor9      10.072575      3.035714
## ytrabajocor10      9.236111      3.822719
## ytrabajocor11      5.416667      2.762500
## ytrabajocor12     10.000000      3.201755
## ytrabajocor13     12.750000      3.924241
## ytrabajocor14      6.500000      3.128333
## ytrabajocor15      6.666667      2.946664
library(dplyr)
library(ggplot2)
library(scales)

# 1. Definir subgrupos disponibles en tu dataset
subgrupos <- c("region", "sexo") # eliminar variables vacías como "educacion"

# 2. Filtrar datos válidos para log-scale
casen2022_plot <- casen2022 %>%
  filter(!is.na(ytrabajocor) & ytrabajocor > 0)

# 3. Generar gráficos de densidad ponderada por subgrupo
for (sg in subgrupos) {
  
  p <- ggplot(casen2022_plot, aes(x = !!sym("ytrabajocor"), weight = !!sym("expr"))) +
    geom_density(fill = "steelblue", alpha = 0.5) +
    scale_x_log10(labels = comma) +
    facet_wrap(as.formula(paste("~", sg))) +
    labs(
      title = paste("Distribución de ingresos por", sg),
      x = "Ingreso individual (CLP, escala log)",
      y = "Densidad ponderada"
    ) +
    theme_minimal()
  
  print(p)
}

library(dplyr)
library(ggplot2)
library(scales)
library(Hmisc)   # para wtd.quantile
## 
## Adjuntando el paquete: 'Hmisc'
## The following object is masked from 'package:survey':
## 
##     deff
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## The following objects are masked from 'package:base':
## 
##     format.pval, units
# ---------------------------
# 1. Filtrar datos válidos
# ---------------------------
casen2022_plot <- casen2022 %>%
  filter(!is.na(ytrabajocor) & ytrabajocor > 0)

# ---------------------------
# 2. Subgrupos válidos
# ---------------------------
subgrupos <- c("region", "sexo")  # elimina variables vacías como "educacion"

# ---------------------------
# 3. Crear gráficos avanzados
# ---------------------------
for (sg in subgrupos) {
  
  # Calcular estadísticas ponderadas por subgrupo
  stats <- casen2022_plot %>%
    group_by(!!sym(sg)) %>%
    summarise(
      media = weighted.mean(ytrabajocor, expr, na.rm = TRUE),
      mediana = Hmisc::wtd.quantile(ytrabajocor, weights = expr, probs = 0.5),
      p10 = Hmisc::wtd.quantile(ytrabajocor, weights = expr, probs = 0.1),
      p90 = Hmisc::wtd.quantile(ytrabajocor, weights = expr, probs = 0.9),
      .groups = "drop"
    )
  
  # Generar gráfico
  p <- ggplot(casen2022_plot, aes(x = !!sym("ytrabajocor"), weight = !!sym("expr"))) +
    
    # Densidad ponderada
    geom_density(fill = "steelblue", alpha = 0.4) +
    
    # Líneas de colas P10 y P90
    geom_vline(data = stats, aes(xintercept = p10), color = "red", linetype = "dashed") +
    geom_vline(data = stats, aes(xintercept = p90), color = "red", linetype = "dashed") +
    
    # Línea de media y mediana
    geom_vline(data = stats, aes(xintercept = media), color = "orange", size = 1) +
    geom_vline(data = stats, aes(xintercept = mediana), color = "green", size = 1) +
    
    # Escala logarítmica
    scale_x_log10(labels = comma) +
    
    # Facetas por subgrupo
    facet_wrap(as.formula(paste("~", sg))) +
    
    # Etiquetas y tema
    labs(
      title = paste("Distribución de ingresos ponderada por", sg),
      x = "Ingreso individual (CLP, escala log)",
      y = "Densidad ponderada",
      caption = "Líneas: naranja = media, verde = mediana, rojo = P10/P90"
    ) +
    theme_minimal()
  
  print(p)
}
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

1️⃣ Descomposición multinivel de desigualdad

Qué es: Descomponer la desigualdad no solo entre individuos, sino entre niveles jerárquicos: regiones, comunas, sexo, educación.

Cómo aporta: Permite responder preguntas como: “¿Cuánto de la desigualdad se explica por diferencias regionales vs diferencias individuales?”.

Herramientas en R:

svygei para GEI por subgrupos

decomp o convey para descomposición de Theil y MLD

Valor añadido: Detecta fuentes estructurales de desigualdad que los análisis simples no muestran.

2️⃣ Análisis de colas extremas con percentiles dinámicos

En lugar de solo P90/P10 o S80/S20, puedes calcular ratios P95/P5, P99/P1, Q-top/bottom ratios.

Visualizar cómo la cola superior concentra riqueza frente a la inferior.

Ejemplo gráfico: Curvas de densidad logarítmica + sombreado de percentiles extremos.

3️⃣ Índices generalizados de entropía con ε adaptativo

GEI con varios valores de ε (0, 1, 2, 3…) permite ver qué tan sensible es la desigualdad a los ricos vs los pobres.

Combinar esto con gráficos de calor por subgrupo da un panorama ultradetallado de concentración.

4️⃣ Desigualdad relativa vs desigualdad absoluta

Calcular diferencia absoluta de ingresos entre percentiles (P90-P10) y compararla con ratio relativo.

Permite detectar si la desigualdad crece porque los ricos suben más o porque los pobres caen más.

5️⃣ Desigualdad multidimensional

Combinar ingreso con educación, salud, vivienda: generar un índice compuesto de desigualdad usando PCA o ponderación.

Herramientas: FactoMineR, survey + convey para ponderar cada dimensión.

Esto le da un valor mucho más completo al análisis que mirar solo ingresos.

6️⃣ Visualizaciones innovadoras

Curvas de Lorenz por subgrupo y por región, todas en un mismo gráfico con colores y transparencias.

Boxplots ponderados en escala logarítmica, con mediana y P90/P10 destacados.

Mapas de calor de desigualdad: cada comuna coloreada según Gini, Theil o ratio P90/P10.

Densidad ponderada logarítmica por subgrupo, con sombreado de cola extrema y líneas de mediana.

7️⃣ Análisis de volatilidad de desigualdad

Estimar intervalos de confianza robustos usando bootstrap ponderado con survey para Gini, Theil y Atkinson.

Permite decir no solo “el Gini es 0.46”, sino “con 95% de confianza, Gini está entre 0.45 y 0.47”.

8️⃣ Curvas de concentración cruzadas

Analizar cómo se concentra el ingreso entre subgrupos cruzados: ej. mujeres vs hombres por nivel educativo y región.

Esto permite ver interacciones complejas de desigualdad que rara vez se muestran en Chile.

9️⃣ Medidas de movilidad intergeneracional (si hay información)

Si la CASEN incluye educación de los padres o trayectoria laboral, puedes calcular la probabilidad de que alguien salga de su decil de ingreso.

Con esto, la desigualdad deja de ser estática y se vuelve dinámica.

🔟 Índice de vulnerabilidad al extremo

Definir un índice que combine:

Pobreza relativa (p10 o p20)

Riesgo de caer en pobreza extrema por shocks

Útil para políticas públicas y análisis predictivo de desigualdad futura.

💡 Resumen del enfoque ultracompleto:

No solo medir desigualdad global.

Descomponerla por niveles y subgrupos.

Analizar colas extremas y relaciones absolutas vs relativas.

Visualizar con mapas, curvas y densidades logarítmicas.

Incluir desigualdad multidimensional y movilidad intergeneracional si es posible.

Estimar intervalos de confianza robustos para todas las medidas.

Si quieres, puedo hacer un prototipo de código R que combine todas estas ideas para la CASEN 2022, generando:

Tabla de desigualdad por subgrupo y por comuna

Curvas de Lorenz y densidades logarítmicas ponderadas

Mapas de calor de Gini y Theil

Ratios de colas extremas y bootstrap de intervalos de confianza

Esto sería un análisis único y profesional que nadie más ha hecho en Chile.

# Instalar y cargar el paquete sf si no lo tienes instalado
# install.packages("sf")
library(sf)
## Warning: package 'sf' was built under R version 4.4.3
## Linking to GEOS 3.13.0, GDAL 3.10.1, PROJ 9.5.1; sf_use_s2() is TRUE
# Ruta al archivo shapefile descomprimido
shp_path <- "microdatos_manzana/Microdatos_Manzana.shp"

# Cargar el shapefile
manzanas <- st_read(shp_path)
## Reading layer `Microdatos_Manzana' from data source 
##   `C:\Users\chris\OneDrive\Escritorio\Casen 2022\casen 2022\microdatos_manzana\Microdatos_Manzana.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 151545 features and 55 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -12183260 ymin: -7350097 xmax: -7523825 ymax: -2060205
## Projected CRS: WGS 84 / Pseudo-Mercator
# Verificar la estructura de los datos
print(manzanas)
## Simple feature collection with 151545 features and 55 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -12183260 ymin: -7350097 xmax: -7523825 ymax: -2060205
## Projected CRS: WGS 84 / Pseudo-Mercator
## First 10 features:
##      CUT                           REGION PROVINCIA    COMUNA     NOMBRE_DIS
## 1  13101 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO  SANTIAGO       MATADERO
## 2  13102 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO CERRILLOS DIVINO MAESTRO
## 3  13102 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO CERRILLOS DIVINO MAESTRO
## 4  13101 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO  SANTIAGO       MATADERO
## 5  13102 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO CERRILLOS   VILLA MÉXICO
## 6  13101 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO  SANTIAGO       FRANKLIN
## 7  13102 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO CERRILLOS DIVINO MAESTRO
## 8  13101 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO  SANTIAGO    SAN EUGENIO
## 9  13102 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO CERRILLOS   LO ERRÁZURIZ
## 10 13101 REGIÓN METROPOLITANA DE SANTIAGO  SANTIAGO  SANTIAGO       MATADERO
##    CODIGO_DIS        MANZENT ZONA_CENSA MANZANA TOTAL_PERS TOTAL_HOMB
## 1          21 13101211002011          2      11        189         90
## 2           3 13102031005035          5      35         80         39
## 3           3 13102031003007          3       7         29         13
## 4          21 13101211002010          2      10        146         78
## 5           2 13102021003001          3       1         74         35
## 6          20 13101201002025          2      25         61         31
## 7           3 13102031003017          3      17         59         27
## 8          24 13101241001026          1      26        205        100
## 9           4 13102041001038          1      38         47         20
## 10         21 13101211002006          2       6        116         52
##    TOTAL_MUJE    PERSONAS_0    PERSONAS_6 PERSONAS_1    PERSONAS_M
## 1          99             9            14        142            24
## 2          41             8             7         51            14
## 3          16 Indeterminado Indeterminado         17             8
## 4          68             8            14        100            24
## 5          39             8             5         40            21
## 6          30 Indeterminado Indeterminado         43            11
## 7          32             6 Indeterminado         41 Indeterminado
## 8         105            22            23        128            32
## 9          27 Indeterminado Indeterminado         38             4
## 10         64             9            10         70            27
##       PERSONAS_E    PUEBLOS_IN TOTAL_VIV_ TOTAL_VIV1 VIV_OCUPA_ TOTAL_VIVI
## 1             15            14        100          0         83        100
## 2  Indeterminado             5         20          0         20         20
## 3              0 Indeterminado          9          0          9          9
## 4             11             5         49          0         49         49
## 5              0 Indeterminado         27          0         27         27
## 6              0            20         22          0         19         22
## 7  Indeterminado Indeterminado         20          0         20         20
## 8             21            25         47          1         46         48
## 9  Indeterminado             9         16          0         15         16
## 10            12             7         46          0         41         46
##    CANTIDAD_H VIV_TIPO_C VIV_TIPO_D VIV_TIPO_T VIV_TIPO_P VIV_TIPO_M VIV_TIPO_1
## 1          83          4         89          0          7          0          0
## 2          23         20          0          0          0          0          0
## 3          11          9          0          0          0          0          0
## 4          50          0         49          0          0          0          0
## 5          27         27          0          0          0          0          0
## 6          19         21          0          0          0          0          0
## 7          20         18          0          0          2          0          0
## 8          51         44          0          0          3          0          0
## 9          16         16          0          0          0          0          0
## 10         41          1         45          0          0          0          0
##    VIV_TIPO_O VIV_PARED_ VIV_PARED1 VIV_PARE_1 VIV_PARE_2 VIV_PARE_3 VIV_PARE_4
## 1           0         74          9          0          0          0          0
## 2           0          2         12          4          2          0          0
## 3           0          0          9          0          0          0          0
## 4           0         41          8          0          0          0          0
## 5           0         11         16          0          0          0          0
## 6           1          4         12          0          3          0          0
## 7           0          2          9          8          1          0          0
## 8           0          7         27          2          1          9          0
## 9           0          0         15          0          0          0          0
## 10          0         17         24          0          0          0          0
##    VIV_TECHO_ VIV_TECHO1 VIV_TECH_1 VIV_TECH_2 VIV_TECH_3 VIV_TECH_4 VIV_TECH_5
## 1          34         38         11          0          0          0          0
## 2           5          0         14          1          0          0          0
## 3           0          0          9          0          0          0          0
## 4          22          1         26          0          0          0          0
## 5          24          0          2          1          0          0          0
## 6           8          0         10          1          0          0          0
## 7           2          0         16          1          0          0          0
## 8           5          0         41          0          0          0          0
## 9           1          0         13          1          0          0          0
## 10          3          3         35          0          0          0          0
##    VIV_PISO_P VIV_PISO_R VIV_PISO_B VIV_PISO_C VIV_PISO_T VIV_MATERI VIV_MATE_1
## 1          83          0          0          0          0         83          0
## 2          14          0          6          0          0         12          8
## 3           9          0          0          0          0          9          0
## 4          46          0          0          0          0         46          0
## 5          27          0          0          0          0         26          1
## 6          19          0          0          0          0         15          4
## 7          19          0          1          0          0         16          3
## 8          44          1          1          0          0         34         12
## 9          11          0          4          0          0         11          4
## 10         41          0          0          0          0         41          0
##    VIV_MATE_2 VIV_AGUA_R VIV_AGUA_P VIV_AGUA_C VIV_AGUA_1
## 1           0         82          0          0          0
## 2           0         20          0          0          0
## 3           0          9          0          0          0
## 4           0         49          0          0          0
## 5           0         27          0          0          0
## 6           0         19          0          0          0
## 7           0         20          0          0          0
## 8           0         46          0          0          0
## 9           0         15          0          0          0
## 10          0         41          0          0          0
##                          geometry
## 1  MULTIPOLYGON (((-7864556 -3...
## 2  MULTIPOLYGON (((-7874018 -3...
## 3  MULTIPOLYGON (((-7872556 -3...
## 4  MULTIPOLYGON (((-7864679 -3...
## 5  MULTIPOLYGON (((-7871985 -3...
## 6  MULTIPOLYGON (((-7863425 -3...
## 7  MULTIPOLYGON (((-7872608 -3...
## 8  MULTIPOLYGON (((-7866881 -3...
## 9  MULTIPOLYGON (((-7871868 -3...
## 10 MULTIPOLYGON (((-7864734 -3...
# 2. Seleccionar solo columna COMUNA y geometry
manzanas_simple <- manzanas %>% select(COMUNA, geometry)

# 3. Filtrar solo Macul
macul <- manzanas_simple %>% filter(COMUNA == "MACUL")

# 4. Graficar
ggplot(macul) +
  geom_sf(fill = "lightblue", color = "white") +
  labs(title = "Comuna de Macul: Manzanas Censales",
       subtitle = "Fuente: INE Chile, Microdatos Manzana") +
  theme_minimal()