Aprovechamos y agregaremos un paso para limpiar los nombres con janitor::clean_names() utiliza el formato snakecase, quitará espacios y les pondra guión bajo, las mayúsculas se vuelven minúsculas y quita caracteres especiales.
Rows: 152497 Columns: 13
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (8): FOLIO, VIV_SEL, N_REN, EDAD, P3_6_1, P3_6_2, EST_DIS, UPM_DIS
dbl (5): HOGAR, PAREN, SEXO, P3_6_3, FACTOR
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Rows: 2225 Columns: 50
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (5): FOLIO, VIV_SEL, N_REN, EST_DIS, UPM_DIS
dbl (45): HOGAR, P6_1_01, P6_1_02, P6_1_03, P6_1_04, P6_1_05, P6_1_06, P6_1_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Rows: 41964 Columns: 50
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (5): FOLIO, VIV_SEL, N_REN, EST_DIS, UPM_DIS
dbl (45): HOGAR, P6_7_01, P6_7_02, P6_7_03, P6_7_04, P6_7_05, P6_7_06, P6_7_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Fusionado uno a uno con diferentes conjuntos.
Me gusta empezar con el modulo que tiene más casos y este sería mi “left” o conjunto “x”
endiseg2021<-tsdem %>% dplyr::left_join(tmodulo, by=idper) %>% dplyr::select(-ends_with(".y")) %>%# quita todas las variables que terminan en .x dplyr::rename_with(~ stringr::str_remove(.x, pattern =".x"), ends_with(".x"))
Si checas me quedo con las variables repetidas que están en la izquierda, porque es mi conjunto más completo.
Hacemos lo mismo con tapart_a:
endiseg2021<-endiseg2021 %>% dplyr::left_join(tapart_a, by=idper) %>% dplyr::select(-ends_with(".y")) %>%# quita todas las variables que terminan en .x dplyr::rename_with(~ stringr::str_remove(.x, pattern =".x"), ends_with(".x"))
Hacemos lo mismo con el tapart_b
endiseg2021<-endiseg2021 %>% dplyr::left_join(tapart_b, by=idper) %>% dplyr::select(-ends_with(".y")) %>%# quita todas las variables que terminan en .x dplyr::rename_with(~ stringr::str_remove(.x, pattern =".x"), ends_with(".x"))
Y hoy agregamos la vivienda. Como para tener la lógica del cuestionario en nuestro dataframe, lo pondre como left:
endiseg2021<-tvivienda %>% dplyr::left_join(endiseg2021, by=idviv) %>%#ojo cambiamos acá dplyr::select(-ends_with(".y")) %>%# quita todas las variables que terminan en .x dplyr::rename_with(~ stringr::str_remove(.x, pattern =".x"), ends_with(".x"))
Vamos a botar los objetos anteriores, porque vamos a importar diccionarios y más para etiquetar nuestras variables.
rm(tvivienda, tsdem, tmodulo, tapart_a, tapart_b)gc() # limpiamos la memoria
used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
Ncells 2288951 122.3 4417760 236.0 NA 4417760 236.0
Vcells 55298551 421.9 127603740 973.6 16384 127476534 972.6
Etiquetado de variables
Diccionario de variables
El formato abierto tiene la ventaja que siempre vendrá con diccionarios. Esto nos puede ayudar muchísimo.
Vamos a importar el diccionario del modulo que tiene las preguntas que más nos interesan
New names:
Rows: 228 Columns: 9
── Column specification
──────────────────────────────────────────────────────── Delimiter: "," chr
(5): nombre_campo, tipo, nemónico, catálogo, rango_claves dbl (1): longitud lgl
(3): ...7, ...8, ...9
ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
Specify the column types or set `show_col_types = FALSE` to quiet this message.
• `` -> `...7`
• `` -> `...8`
• `` -> `...9`
Vamos a utilizar algunos elementos de cadena, para hacer la información más corta
Rows: 2 Columns: 2
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (1): descrip
dbl (1): cve
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
num [1:152497] 1 NA 2 NA NA 2 NA NA NA 2 ...
- attr(*, "label")= chr "P7.1 ¿Cuál es su sexo asignado al nacer?"
- attr(*, "labels")= Named num [1:2] 1 2
..- attr(*, "names")= chr [1:2] "Hombre" "Mujer"
Tabulados
Tabulados con {janitor}
Sin factores de expansión este es un gran comando.
Rows: 6 Columns: 2
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (1): descrip
dbl (1): cve
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
p8_1 Hombre Mujer Total
Una mujer a la que le gustan solamente las mujeres 0.35% 0.71% 0.55%
Un hombre al que le gustan solamente los hombres 2.77% 0.54% 1.56%
Una persona que le gustan tanto hombres como mujeres 1.09% 3.78% 2.56%
Una mujer que le gustan solamente los hombres 0.23% 94.67% 51.71%
Un hombre que le gustan solamente las mujeres 95.23% 0.11% 43.38%
Con otra orientación 0.31% 0.20% 0.25%
Total 100.00% 100.00% 100.00%
# A tibble: 7 × 3
p8_1 Hombre Mujer
<chr> <dbl> <dbl>
1 Una mujer a la que le gustan solamente las mujeres 0.276 0.688
2 Un hombre al que le gustan solamente los hombres 2.46 0.495
3 Una persona que le gustan tanto hombres como mujeres 0.923 3.45
4 Una mujer que le gustan solamente los hombres 0.214 95.1
5 Un hombre que le gustan solamente las mujeres 95.8 0.100
6 Con otra orientación 0.285 0.163
7 n 16576979 20181192
# A tibble: 12 × 5
p8_1 p7_1 pct moe n
<fct> <fct> <dbl> <dbl> <dbl>
1 Una mujer a la que le gustan solamente las mujer… Homb… 24.8 7.41 1.85e5
2 Una mujer a la que le gustan solamente las mujer… Mujer 75.2 7.41 1.85e5
3 Un hombre al que le gustan solamente los hombres Homb… 80.3 4.04 5.08e5
4 Un hombre al que le gustan solamente los hombres Mujer 19.7 4.04 5.08e5
5 Una persona que le gustan tanto hombres como muj… Homb… 18.0 3.05 8.50e5
6 Una persona que le gustan tanto hombres como muj… Mujer 82.0 3.05 8.50e5
7 Una mujer que le gustan solamente los hombres Homb… 0.184 0.0756 1.92e7
8 Una mujer que le gustan solamente los hombres Mujer 99.8 0.0756 1.92e7
9 Un hombre que le gustan solamente las mujeres Homb… 99.9 0.0686 1.59e7
10 Un hombre que le gustan solamente las mujeres Mujer 0.127 0.0686 1.59e7
11 Con otra orientación Homb… 59.0 12.6 8.01e4
12 Con otra orientación Mujer 41.0 12.6 8.01e4
# A tibble: 6 × 4
p8_1 media_ponderada media_ponderada_low media_ponderada_upp
<fct> <dbl> <dbl> <dbl>
1 Una mujer a la que le… 36.7 34.0 39.3
2 Un hombre al que le g… 32.2 30.9 33.5
3 Una persona que le gu… 25.5 24.8 26.3
4 Una mujer que le gust… 44.5 44.2 44.8
5 Un hombre que le gust… 43.2 42.9 43.5
6 Con otra orientación 28.0 25.0 31.0
# A tibble: 6 × 3
p8_1 proportion proportion_se
<fct> <dbl> <dbl>
1 Una mujer a la que le gustan solamente las mujeres 0.00502 0.000425
2 Un hombre al que le gustan solamente los hombres 0.0138 0.000679
3 Una persona que le gustan tanto hombres como mujeres 0.0231 0.000924
4 Una mujer que le gustan solamente los hombres 0.523 0.00323
5 Un hombre que le gustan solamente las mujeres 0.433 0.00321
6 Con otra orientación 0.00218 0.000275