Previo
Introducción
Aquí dejo la presentación
Descarga el proyecto desde acá
En esta liga puedes descarga el proyecto de trabajo. De esta manera no tendremos problemas con las rutas relativas.
https://tinyurl.com/demos-talleres
Video de la sesión
Paquetes
if (!require("pacman")) install.packages("pacman") # instala pacman si se requiere
Loading required package: pacman
pacman::p_load(tidyverse,
haven,
readr,
foreign,
janitor) #carga los paquetes necesarios
Importación de datos
Recuerdo que se debe revisar la documentación
https://www.inegi.org.mx/programas/ccpv/2020/#Microdatos
Desde .csv
Los archivos “.csv” son archivos separados por comas. Los podemos abrir con un bloc de notas para revisar
Hay dos comandos que nos permiten importar archivos de texto, el de base read.csv()
y readr::read_csv()
viviendas01 <- read.csv("data_t1/Viviendas01.CSV")
revisemos los nombres y las primeres 6 líneas
[1] "ENT" "MUN" "LOC50K" "ID_VIV"
[5] "COBERTURA" "ESTRATO" "UPM" "FACTOR"
[9] "CLAVIVP" "PAREDES" "TECHOS" "PISOS"
[13] "COCINA" "CUADORM" "TOTCUART" "LUG_COC"
[17] "COMBUSTIBLE" "ESTUFA" "ELECTRICIDAD" "FOCOS"
[21] "FOCOS_AHORRA" "AGUA_ENTUBADA" "ABA_AGUA_ENTU" "ABA_AGUA_NO_ENTU"
[25] "TINACO" "CISTERNA" "BOMBA_AGUA" "REGADERA"
[29] "BOILER" "CALENTADOR_SOLAR" "AIRE_ACON" "PANEL_SOLAR"
[33] "SERSAN" "CONAGUA" "USOEXC" "DRENAJE"
[37] "SEPARACION1" "SEPARACION2" "SEPARACION3" "SEPARACION4"
[41] "DESTINO_BAS" "REFRIGERADOR" "LAVADORA" "HORNO"
[45] "AUTOPROP" "MOTOCICLETA" "BICICLETA" "RADIO"
[49] "TELEVISOR" "COMPUTADORA" "TELEFONO" "CELULAR"
[53] "INTERNET" "SERV_TV_PAGA" "SERV_PEL_PAGA" "CON_VJUEGOS"
[57] "TENENCIA" "ESCRITURAS" "FORMA_ADQUI" "FINANCIAMIENTO1"
[61] "FINANCIAMIENTO2" "FINANCIAMIENTO3" "DEUDA" "NUMPERS"
[65] "DUE1_NUM" "DUE2_NUM" "MCONMIG" "MNUMPERS"
[69] "INGR_PEROTROPAIS" "INGR_PERDENTPAIS" "INGR_AYUGOB" "INGR_JUBPEN"
[73] "ALIMENTACION" "ALIM_ADL1" "ALIM_ADL2" "ING_ALIM_ADL1"
[77] "ING_ALIM_ADL2" "ING_ALIM_ADL3" "TIPOHOG" "INGTRHOG"
[81] "JEFE_SEXO" "JEFE_EDAD" "TAMLOC"
ENT MUN LOC50K ID_VIV COBERTURA ESTRATO UPM FACTOR CLAVIVP PAREDES
1 1 1 1 1.001e+10 2 01-001-0001-00 1 59 1 8
2 1 1 1 1.001e+10 2 01-001-0001-00 1 59 1 8
3 1 1 1 1.001e+10 2 01-001-0001-00 1 59 1 8
4 1 1 1 1.001e+10 2 01-001-0001-00 1 59 1 8
5 1 1 1 1.001e+10 2 01-001-0001-00 1 59 1 8
6 1 1 1 1.001e+10 2 01-001-0001-00 1 59 1 8
TECHOS PISOS COCINA CUADORM TOTCUART LUG_COC COMBUSTIBLE ESTUFA ELECTRICIDAD
1 10 3 1 3 5 1 2 NA 1
2 10 3 1 3 6 1 2 NA 1
3 10 3 1 1 2 1 2 NA 1
4 10 3 1 2 6 1 2 NA 1
5 10 3 1 3 4 1 2 NA 1
6 10 3 1 3 4 1 2 NA 1
FOCOS FOCOS_AHORRA AGUA_ENTUBADA ABA_AGUA_ENTU ABA_AGUA_NO_ENTU TINACO
1 25 25 1 1 NA 1
2 15 15 1 1 NA 2
3 10 10 1 1 NA 2
4 18 18 1 1 NA 2
5 16 16 1 1 NA 2
6 42 42 1 1 NA 1
CISTERNA BOMBA_AGUA REGADERA BOILER CALENTADOR_SOLAR AIRE_ACON PANEL_SOLAR
1 3 5 7 1 3 6 8
2 3 5 7 2 3 6 8
3 3 5 7 1 3 5 8
4 3 5 7 1 3 6 8
5 3 5 7 2 3 6 8
6 3 5 7 1 4 5 8
SERSAN CONAGUA USOEXC DRENAJE SEPARACION1 SEPARACION2 SEPARACION3 SEPARACION4
1 1 1 3 1 1 4 6 8
2 1 1 3 1 2 4 5 8
3 1 1 3 1 2 4 6 8
4 1 1 3 1 2 4 6 7
5 1 1 3 1 1 4 6 8
6 1 1 3 1 2 4 6 8
DESTINO_BAS REFRIGERADOR LAVADORA HORNO AUTOPROP MOTOCICLETA BICICLETA RADIO
1 1 1 3 5 7 2 4 6
2 1 1 3 5 7 2 4 5
3 1 1 3 5 7 2 4 5
4 1 1 3 5 7 2 4 5
5 1 1 3 5 7 2 4 5
6 1 1 3 5 7 2 4 5
TELEVISOR COMPUTADORA TELEFONO CELULAR INTERNET SERV_TV_PAGA SERV_PEL_PAGA
1 7 1 3 5 7 1 3
2 7 1 3 5 7 1 3
3 7 1 4 5 7 2 3
4 7 1 4 5 7 1 4
5 7 1 3 5 7 1 3
6 7 1 3 5 7 1 3
CON_VJUEGOS TENENCIA ESCRITURAS FORMA_ADQUI FINANCIAMIENTO1 FINANCIAMIENTO2
1 6 1 1 2 6 NA
2 5 1 1 2 8 NA
3 6 1 1 2 8 NA
4 5 1 1 1 5 NA
5 5 1 1 1 5 NA
6 5 1 1 1 5 NA
FINANCIAMIENTO3 DEUDA NUMPERS DUE1_NUM DUE2_NUM MCONMIG MNUMPERS
1 NA 2 3 1 NA 3 NA
2 NA NA 4 1 NA 3 NA
3 NA NA 1 1 NA 3 NA
4 NA 2 3 1 NA 3 NA
5 NA 2 4 1 NA 3 NA
6 NA 2 4 1 NA 3 NA
INGR_PEROTROPAIS INGR_PERDENTPAIS INGR_AYUGOB INGR_JUBPEN ALIMENTACION
1 2 4 6 7 3
2 2 4 6 8 3
3 2 4 6 8 3
4 2 4 6 8 3
5 2 4 6 8 3
6 2 4 6 8 3
ALIM_ADL1 ALIM_ADL2 ING_ALIM_ADL1 ING_ALIM_ADL2 ING_ALIM_ADL3 TIPOHOG
1 2 4 2 4 6 1
2 2 4 2 4 6 1
3 2 4 2 4 6 5
4 2 4 2 4 6 1
5 2 4 2 4 6 1
6 2 4 2 4 6 1
INGTRHOG JEFE_SEXO JEFE_EDAD TAMLOC
1 NA 3 55 5
2 30100 1 45 5
3 20000 1 60 5
4 66000 1 62 5
5 25000 1 52 5
6 50000 1 40 5
viviendas01 <- read_csv("data_t1/Viviendas01.CSV")
Rows: 24349 Columns: 83
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (10): ENT, MUN, LOC50K, ID_VIV, ESTRATO, UPM, CLAVIVP, TECHOS, DUE1_NUM,...
dbl (73): COBERTURA, FACTOR, PAREDES, PISOS, COCINA, CUADORM, TOTCUART, LUG_...
ℹ 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.
[1] "ENT" "MUN" "LOC50K" "ID_VIV"
[5] "COBERTURA" "ESTRATO" "UPM" "FACTOR"
[9] "CLAVIVP" "PAREDES" "TECHOS" "PISOS"
[13] "COCINA" "CUADORM" "TOTCUART" "LUG_COC"
[17] "COMBUSTIBLE" "ESTUFA" "ELECTRICIDAD" "FOCOS"
[21] "FOCOS_AHORRA" "AGUA_ENTUBADA" "ABA_AGUA_ENTU" "ABA_AGUA_NO_ENTU"
[25] "TINACO" "CISTERNA" "BOMBA_AGUA" "REGADERA"
[29] "BOILER" "CALENTADOR_SOLAR" "AIRE_ACON" "PANEL_SOLAR"
[33] "SERSAN" "CONAGUA" "USOEXC" "DRENAJE"
[37] "SEPARACION1" "SEPARACION2" "SEPARACION3" "SEPARACION4"
[41] "DESTINO_BAS" "REFRIGERADOR" "LAVADORA" "HORNO"
[45] "AUTOPROP" "MOTOCICLETA" "BICICLETA" "RADIO"
[49] "TELEVISOR" "COMPUTADORA" "TELEFONO" "CELULAR"
[53] "INTERNET" "SERV_TV_PAGA" "SERV_PEL_PAGA" "CON_VJUEGOS"
[57] "TENENCIA" "ESCRITURAS" "FORMA_ADQUI" "FINANCIAMIENTO1"
[61] "FINANCIAMIENTO2" "FINANCIAMIENTO3" "DEUDA" "NUMPERS"
[65] "DUE1_NUM" "DUE2_NUM" "MCONMIG" "MNUMPERS"
[69] "INGR_PEROTROPAIS" "INGR_PERDENTPAIS" "INGR_AYUGOB" "INGR_JUBPEN"
[73] "ALIMENTACION" "ALIM_ADL1" "ALIM_ADL2" "ING_ALIM_ADL1"
[77] "ING_ALIM_ADL2" "ING_ALIM_ADL3" "TIPOHOG" "INGTRHOG"
[81] "JEFE_SEXO" "JEFE_EDAD" "TAMLOC"
# A tibble: 6 × 83
ENT MUN LOC50K ID_VIV COBERTURA ESTRATO UPM FACTOR CLAVIVP PAREDES
<chr> <chr> <chr> <chr> <dbl> <chr> <chr> <dbl> <chr> <dbl>
1 01 001 0001 010010000001 2 01-001… 00001 59 01 8
2 01 001 0001 010010000002 2 01-001… 00001 59 01 8
3 01 001 0001 010010000003 2 01-001… 00001 59 01 8
4 01 001 0001 010010000004 2 01-001… 00001 59 01 8
5 01 001 0001 010010000005 2 01-001… 00001 59 01 8
6 01 001 0001 010010000006 2 01-001… 00001 59 01 8
# ℹ 73 more variables: TECHOS <chr>, PISOS <dbl>, COCINA <dbl>, CUADORM <dbl>,
# TOTCUART <dbl>, LUG_COC <dbl>, COMBUSTIBLE <dbl>, ESTUFA <dbl>,
# ELECTRICIDAD <dbl>, FOCOS <dbl>, FOCOS_AHORRA <dbl>, AGUA_ENTUBADA <dbl>,
# ABA_AGUA_ENTU <dbl>, ABA_AGUA_NO_ENTU <dbl>, TINACO <dbl>, CISTERNA <dbl>,
# BOMBA_AGUA <dbl>, REGADERA <dbl>, BOILER <dbl>, CALENTADOR_SOLAR <dbl>,
# AIRE_ACON <dbl>, PANEL_SOLAR <dbl>, SERSAN <dbl>, CONAGUA <dbl>,
# USOEXC <dbl>, DRENAJE <dbl>, SEPARACION1 <dbl>, SEPARACION2 <dbl>, …
Desde SAS
viviendas01 <- haven::read_sas("data_t1/viviendas01.sas7bdat")
names(viviendas01)
[1] "ENT" "MUN" "LOC50K" "ID_VIV"
[5] "COBERTURA" "ESTRATO" "UPM" "FACTOR"
[9] "CLAVIVP" "PAREDES" "TECHOS" "PISOS"
[13] "COCINA" "CUADORM" "TOTCUART" "LUG_COC"
[17] "COMBUSTIBLE" "ESTUFA" "ELECTRICIDAD" "FOCOS"
[21] "FOCOS_AHORRA" "AGUA_ENTUBADA" "ABA_AGUA_ENTU" "ABA_AGUA_NO_ENTU"
[25] "TINACO" "CISTERNA" "BOMBA_AGUA" "REGADERA"
[29] "BOILER" "CALENTADOR_SOLAR" "AIRE_ACON" "PANEL_SOLAR"
[33] "SERSAN" "CONAGUA" "USOEXC" "DRENAJE"
[37] "SEPARACION1" "SEPARACION2" "SEPARACION3" "SEPARACION4"
[41] "DESTINO_BAS" "REFRIGERADOR" "LAVADORA" "HORNO"
[45] "AUTOPROP" "MOTOCICLETA" "BICICLETA" "RADIO"
[49] "TELEVISOR" "COMPUTADORA" "TELEFONO" "CELULAR"
[53] "INTERNET" "SERV_TV_PAGA" "SERV_PEL_PAGA" "CON_VJUEGOS"
[57] "TENENCIA" "ESCRITURAS" "FORMA_ADQUI" "FINANCIAMIENTO1"
[61] "FINANCIAMIENTO2" "FINANCIAMIENTO3" "DEUDA" "NUMPERS"
[65] "DUE1_NUM" "DUE2_NUM" "MCONMIG" "MNUMPERS"
[69] "INGR_PEROTROPAIS" "INGR_PERDENTPAIS" "INGR_AYUGOB" "INGR_JUBPEN"
[73] "ALIMENTACION" "ALIM_ADL1" "ALIM_ADL2" "ING_ALIM_ADL1"
[77] "ING_ALIM_ADL2" "ING_ALIM_ADL3" "TIPOHOG" "INGTRHOG"
[81] "JEFE_SEXO" "JEFE_EDAD" "TAMLOC"
# A tibble: 6 × 83
ENT MUN LOC50K ID_VIV COBERTURA ESTRATO UPM FACTOR CLAVIVP PAREDES
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <chr> <chr>
1 01 001 0001 010010000001 2 01-001… 00001 59 01 8
2 01 001 0001 010010000002 2 01-001… 00001 59 01 8
3 01 001 0001 010010000003 2 01-001… 00001 59 01 8
4 01 001 0001 010010000004 2 01-001… 00001 59 01 8
5 01 001 0001 010010000005 2 01-001… 00001 59 01 8
6 01 001 0001 010010000006 2 01-001… 00001 59 01 8
# ℹ 73 more variables: TECHOS <chr>, PISOS <chr>, COCINA <chr>, CUADORM <dbl>,
# TOTCUART <dbl>, LUG_COC <chr>, COMBUSTIBLE <chr>, ESTUFA <chr>,
# ELECTRICIDAD <chr>, FOCOS <dbl>, FOCOS_AHORRA <dbl>, AGUA_ENTUBADA <chr>,
# ABA_AGUA_ENTU <chr>, ABA_AGUA_NO_ENTU <chr>, TINACO <chr>, CISTERNA <chr>,
# BOMBA_AGUA <chr>, REGADERA <chr>, BOILER <chr>, CALENTADOR_SOLAR <chr>,
# AIRE_ACON <chr>, PANEL_SOLAR <chr>, SERSAN <chr>, CONAGUA <chr>,
# USOEXC <chr>, DRENAJE <chr>, SEPARACION1 <chr>, SEPARACION2 <chr>, …
Desde .dta
viviendas01 <- haven::read_dta("data_t1/Viviendas01.dta")
Desde .sav
viviendas01 <- haven::read_sav("data_t1/Viviendas01.sav")
Fusionado de datos
Para ello vamos a importar también la base de personas
personas01 <- haven::read_sav("data_t1/Personas01.SAV")
Veamos las dimensiones de estas tablas
Con el INEGI no hay problema, pero bien vale revisar los id sean únicos:
viviendas01 %>%
janitor::get_dupes(ID_VIV)
No duplicate combinations found of: ID_VIV
# A tibble: 0 × 84
# ℹ 84 variables: ID_VIV <chr>, dupe_count <int>, ENT <chr+lbl>, MUN <chr>,
# LOC50K <chr>, COBERTURA <chr+lbl>, ESTRATO <chr>, UPM <chr>, FACTOR <dbl>,
# CLAVIVP <chr+lbl>, PAREDES <chr+lbl>, TECHOS <chr+lbl>, PISOS <chr+lbl>,
# COCINA <chr+lbl>, CUADORM <dbl+lbl>, TOTCUART <dbl+lbl>, LUG_COC <chr+lbl>,
# COMBUSTIBLE <chr+lbl>, ESTUFA <chr+lbl>, ELECTRICIDAD <chr+lbl>,
# FOCOS <dbl+lbl>, FOCOS_AHORRA <dbl+lbl>, AGUA_ENTUBADA <chr+lbl>,
# ABA_AGUA_ENTU <chr+lbl>, ABA_AGUA_NO_ENTU <chr+lbl>, TINACO <chr+lbl>, …
personas01 %>%
janitor::get_dupes(ID_PERSONA)
No duplicate combinations found of: ID_PERSONA
# A tibble: 0 × 92
# ℹ 92 variables: ID_PERSONA <chr>, dupe_count <int>, ENT <chr+lbl>, MUN <chr>,
# LOC50K <chr>, ID_VIV <chr>, COBERTURA <chr+lbl>, ESTRATO <chr>, UPM <chr>,
# FACTOR <dbl>, CLAVIVP <chr+lbl>, NUMPER <chr>, SEXO <chr+lbl>,
# EDAD <dbl+lbl>, PARENTESCO <chr+lbl>, IDENT_MADRE <chr+lbl>,
# IDENT_PADRE <chr+lbl>, ENT_PAIS_NAC <chr+lbl>, NACIONALIDAD <chr+lbl>,
# SERSALUD <chr+lbl>, AFRODES <chr+lbl>, REGIS_NAC <chr+lbl>,
# DHSERSAL1 <chr+lbl>, DHSERSAL2 <chr+lbl>, RELIGION <chr+lbl>, …
Con merge()
Casos en ambas bases
Por default, el comando tiene activado la opción “all = FALSE”, que nos deja los datos de ambas bases comunes. (tipo una intersección)
cacenso01<-merge(viviendas01,
personas01,
by="ID_VIV",
all = F)
dim(cacenso01)
[1] "ID_VIV" "ENT.x" "MUN.x"
[4] "LOC50K.x" "COBERTURA.x" "ESTRATO.x"
[7] "UPM.x" "FACTOR.x" "CLAVIVP.x"
[10] "PAREDES" "TECHOS" "PISOS"
[13] "COCINA" "CUADORM" "TOTCUART"
[16] "LUG_COC" "COMBUSTIBLE" "ESTUFA"
[19] "ELECTRICIDAD" "FOCOS" "FOCOS_AHORRA"
[22] "AGUA_ENTUBADA" "ABA_AGUA_ENTU" "ABA_AGUA_NO_ENTU"
[25] "TINACO" "CISTERNA" "BOMBA_AGUA"
[28] "REGADERA" "BOILER" "CALENTADOR_SOLAR"
[31] "AIRE_ACON" "PANEL_SOLAR" "SERSAN"
[34] "CONAGUA" "USOEXC" "DRENAJE"
[37] "SEPARACION1" "SEPARACION2" "SEPARACION3"
[40] "SEPARACION4" "DESTINO_BAS" "REFRIGERADOR"
[43] "LAVADORA" "HORNO" "AUTOPROP"
[46] "MOTOCICLETA" "BICICLETA" "RADIO"
[49] "TELEVISOR" "COMPUTADORA" "TELEFONO"
[52] "CELULAR" "INTERNET" "SERV_TV_PAGA"
[55] "SERV_PEL_PAGA" "CON_VJUEGOS" "TENENCIA"
[58] "ESCRITURAS" "FORMA_ADQUI" "FINANCIAMIENTO1"
[61] "FINANCIAMIENTO2" "FINANCIAMIENTO3" "DEUDA"
[64] "NUMPERS" "DUE1_NUM" "DUE2_NUM"
[67] "MCONMIG" "MNUMPERS" "INGR_PEROTROPAIS"
[70] "INGR_PERDENTPAIS" "INGR_AYUGOB" "INGR_JUBPEN"
[73] "ALIMENTACION" "ALIM_ADL1" "ALIM_ADL2"
[76] "ING_ALIM_ADL1" "ING_ALIM_ADL2" "ING_ALIM_ADL3"
[79] "TIPOHOG" "INGTRHOG" "JEFE_SEXO"
[82] "JEFE_EDAD" "TAMLOC.x" "ENT.y"
[85] "MUN.y" "LOC50K.y" "ID_PERSONA"
[88] "COBERTURA.y" "ESTRATO.y" "UPM.y"
[91] "FACTOR.y" "CLAVIVP.y" "NUMPER"
[94] "SEXO" "EDAD" "PARENTESCO"
[97] "IDENT_MADRE" "IDENT_PADRE" "ENT_PAIS_NAC"
[100] "NACIONALIDAD" "SERSALUD" "AFRODES"
[103] "REGIS_NAC" "DHSERSAL1" "DHSERSAL2"
[106] "RELIGION" "DIS_VER" "DIS_OIR"
[109] "DIS_CAMINAR" "DIS_RECORDAR" "DIS_BANARSE"
[112] "DIS_HABLAR" "DIS_MENTAL" "CAU_VER"
[115] "CAU_OIR" "CAU_CAMINAR" "CAU_RECORDAR"
[118] "CAU_BANARSE" "CAU_HABLAR" "CAU_MENTAL"
[121] "HLENGUA" "QDIALECT_INALI" "HESPANOL"
[124] "ELENGUA" "PERTE_INDIGENA" "ASISTEN"
[127] "MUN_ASI" "ENT_PAIS_ASI" "TIE_TRASLADO_ESCU"
[130] "MED_TRASLADO_ESC1" "MED_TRASLADO_ESC2" "MED_TRASLADO_ESC3"
[133] "NIVACAD" "ESCOLARI" "NOMCAR_C"
[136] "ALFABET" "ESCOACUM" "ENT_PAIS_RES_5A"
[139] "MUN_RES_5A" "CAUSA_MIG_V" "SITUA_CONYUGAL"
[142] "IDENT_PAREJA" "CONACT" "OCUPACION_C"
[145] "SITTRA" "AGUINALDO" "VACACIONES"
[148] "SERVICIO_MEDICO" "UTILIDADES" "INCAP_SUELDO"
[151] "SAR_AFORE" "CREDITO_VIVIENDA" "INGTRMEN"
[154] "HORTRA" "ACTIVIDADES_C" "MUN_TRAB"
[157] "ENT_PAIS_TRAB" "TIE_TRASLADO_TRAB" "MED_TRASLADO_TRAB1"
[160] "MED_TRASLADO_TRAB2" "MED_TRASLADO_TRAB3" "HIJOS_NAC_VIVOS"
[163] "HIJOS_FALLECIDOS" "HIJOS_SOBREVIV" "FECHA_NAC_M"
[166] "FECHA_NAC_A" "SOBREVIVENCIA" "IDENT_HIJO"
[169] "EDAD_MORIR_D" "EDAD_MORIR_M" "EDAD_MORIR_A"
[172] "EDAD_MORIR_TD" "TAMLOC.y"
Todos los casos
Si cambiamos la opción “all = TRUE”, que nos deja los datos comunes a ambas bases. (como una unión)
cacenso01<-merge(viviendas01,
personas01,
by="ID_VIV",
all = T)
dim(cacenso01)
Casos en la base 1
Si queremos quedarnos con todos los datos que hay en la primera base, x, vamos a usar a opción all.x = TRUE.
cacenso01<-merge(viviendas01,
personas01,
by="ID_VIV",
all.x = TRUE)
dim(cacenso01)
Casos de la base 2
Notamos que hoy sí tenemos los datos de toda la población y hay missings en las variables aportadas por la base de trabajo
Si queremos lo contrario, quedarnos con los datos aportados por la segunda base, y, vamos a usar la opción all.y=TRUE
cacenso01<-merge(viviendas01,
personas01,
by="ID_VIV",
all.y = TRUE)
dim(cacenso01)
Con {dplyr}
El caso 1:
cacenso01<-dplyr::inner_join(viviendas01,
personas01,
by="ID_VIV")
dim(cacenso01)
El caso 2:
cacenso01<-dplyr::full_join(viviendas01,
personas01,
by="ID_VIV")
dim(cacenso01)
El caso 3:
cacenso01<-dplyr::left_join(viviendas01,
personas01,
by="ID_VIV")
dim(cacenso01)
El caso 4:
cacenso01<-dplyr::right_join(viviendas01,
personas01,
by="ID_VIV")
dim(cacenso01)
También se puede usar con pipes, cualquier opción de dplyr
cacenso01<-viviendas01 %>% # pongo el conjunto que será la "izquierda
dplyr::right_join(personas01,
by="ID_VIV")
dim(cacenso01)
Agregar casos
Supongamos que queremos pegar la información de viviendas de Aguascalientes y Tlaxcala
viviendas29 <- read_sav("data_t1/Viviendas29.SAV")
Con rbind()
viviendas01_29<-rbind(viviendas01, viviendas29)
table(viviendas01_29$ENT)
Con dplyr::bind_rows
viviendas01_29<-dplyr::bind_rows(viviendas01, viviendas29)