Falta integrar la lógica para aplicarla a las 600 columnas. Para una ya está.
library(tidyverse)
## -- Attaching packages ---------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2 v purrr 0.3.4
## v tibble 3.0.1 v dplyr 1.0.0
## v tidyr 1.1.0 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.5.0
## -- Conflicts ------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(haven)
library(readr)
Leemos
CASEN_2013 <- read_sav("CASEN_2013_MN_B_Principal.sav")
head(CASEN_2013)
## # A tibble: 6 x 600
## folio o region comuna zona pco1 sexo edad ecivil h5l
## <dbl> <dbl> <dbl+l> <dbl+lbl> <dbl+l> <dbl+lb> <dbl+l> <dbl> <dbl+l> <dbl>
## 1 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 36 4 [Sep~ NA
## 2 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 10 [Her~ 2 [Muj~ 30 7 [Sol~ NA
## 3 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 1 [Hom~ 41 1 [Cas~ 1
## 4 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 2 [Esp~ 2 [Muj~ 41 1 [Cas~ 1
## 5 1.10e10 3 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 3 [Hij~ 2 [Muj~ 10 7 [Sol~ NA
## 6 1.10e10 4 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 3 [Hij~ 1 [Hom~ 9 7 [Sol~ NA
## # ... with 590 more variables: h5h <dbl>, pareja <dbl+lbl>, nucleo <dbl>,
## # pco2 <dbl+lbl>, h8 <dbl+lbl>, h8esp <chr>, h9 <dbl+lbl>, h9esp <chr>,
## # e1 <dbl+lbl>, e2a <dbl+lbl>, e2b <dbl+lbl>, e2c <dbl+lbl>, e3 <dbl+lbl>,
## # e4 <dbl+lbl>, e4esp <chr>, e5 <dbl+lbl>, e5esp <chr>, e6a <dbl+lbl>,
## # e6b <dbl+lbl>, e6c <dbl+lbl>, e6d <dbl+lbl>, e7 <dbl+lbl>, e8nom <chr>,
## # e8dir <chr>, e8com <chr>, e8com_cod <dbl+lbl>, e8rbd <dbl>, e8dv <chr>,
## # e8depen <dbl+lbl>, e8te <dbl+lbl>, e9 <dbl+lbl>, e10 <dbl+lbl>,
## # e11a <dbl+lbl>, e11b <dbl+lbl>, e11c <dbl+lbl>, e11d <dbl+lbl>,
## # e11e <dbl+lbl>, e12a <dbl+lbl>, e12b1 <dbl+lbl>, e12b2 <dbl+lbl>,
## # e12esp <chr>, e13pbu <dbl+lbl>, e13pbt <dbl+lbl>, e13pbd <dbl+lbl>,
## # e13pbm <dbl+lbl>, e13bu <dbl+lbl>, e13bt <dbl+lbl>, e13bd <dbl+lbl>,
## # e13bm <dbl+lbl>, e13bpc <dbl+lbl>, e13mu <dbl+lbl>, e13mt <dbl+lbl>,
## # e13md <dbl+lbl>, e13mm <dbl+lbl>, e14a <dbl+lbl>, e14b <dbl+lbl>,
## # e15 <dbl+lbl>, e16 <dbl+lbl>, e17t1 <dbl+lbl>, e18m1 <dbl+lbl>,
## # e18p1 <dbl+lbl>, e17t2 <dbl+lbl>, e18m2 <dbl+lbl>, e18p2 <dbl+lbl>,
## # e0 <dbl+lbl>, o1 <dbl+lbl>, o2 <dbl+lbl>, o3 <dbl+lbl>, o4 <dbl+lbl>,
## # o5 <dbl+lbl>, o6 <dbl+lbl>, o7r1 <dbl+lbl>, o7r2 <dbl+lbl>, o8 <dbl+lbl>,
## # o9a <chr>, oficio4 <chr+lbl>, oficio1 <dbl+lbl>, o9b <chr>, o10 <dbl+lbl>,
## # o11 <dbl+lbl>, o12 <dbl+lbl>, o13 <dbl+lbl>, o14 <dbl+lbl>, o15 <dbl+lbl>,
## # o16 <dbl+lbl>, o17 <dbl+lbl>, o18 <dbl+lbl>, o19 <dbl+lbl>, o20 <dbl+lbl>,
## # o21 <chr>, rama4_sub <chr+lbl>, rama1_sub <dbl+lbl>, o22 <chr+lbl>,
## # o23 <chr>, rama4 <chr+lbl>, rama1 <dbl+lbl>, o24 <chr+lbl>, o25 <chr+lbl>,
## # o26 <dbl+lbl>, o27 <dbl+lbl>, ...
Determinamos las clases de la columna estado civil (ecivil)
CASEN_2013$ecivil %>% class()
## [1] "haven_labelled" "vctrs_vctr" "double"
Construímos la tabla con el diccionario para poder acceder a los elementos como arreglos
valor <- CASEN_2013$ecivil %>% attr('labels')
df0 <- as.data.frame(valor)
categoria <- row.names(df0)
ecivil <- cbind(df0, categoria)
ecivil
## valor categoria
## Casado(a) 1 Casado(a)
## Conviviente o pareja 2 Conviviente o pareja
## Anulado(a) 3 Anulado(a)
## Separado(a) 4 Separado(a)
## Divorciado(a) 5 Divorciado(a)
## Viudo(a) 6 Viudo(a)
## Soltero(a) 7 Soltero(a)
## NS/NR 9 NS/NR
ecivil$valor[3]
## [1] 3
ecivil$categoria[3]
## [1] "Anulado(a)"
Con la suguiente línea transformamos valores de categorías en las columnas del dataframe con la ayuda del diccionario:
#codigo fundamental
CASEN_2013_2 <- CASEN_2013 %>% mutate(ecivil = ifelse(ecivil == 1, "Casado(a)", ecivil))
CASEN_2013_2
## # A tibble: 218,491 x 600
## folio o region comuna zona pco1 sexo edad ecivil h5l
## <dbl> <dbl> <dbl+l> <dbl+lbl> <dbl+l> <dbl+lb> <dbl+l> <dbl> <chr> <dbl>
## 1 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 36 4 NA
## 2 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 10 [Her~ 2 [Muj~ 30 7 NA
## 3 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 1 [Hom~ 41 Casad~ 1
## 4 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 2 [Esp~ 2 [Muj~ 41 Casad~ 1
## 5 1.10e10 3 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 3 [Hij~ 2 [Muj~ 10 7 NA
## 6 1.10e10 4 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 3 [Hij~ 1 [Hom~ 9 7 NA
## 7 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 1 [Hom~ 73 Casad~ 1
## 8 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 2 [Esp~ 2 [Muj~ 73 Casad~ 1
## 9 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 60 7 NA
## 10 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 49 7 NA
## # ... with 218,481 more rows, and 590 more variables: h5h <dbl>,
## # pareja <dbl+lbl>, nucleo <dbl>, pco2 <dbl+lbl>, h8 <dbl+lbl>, h8esp <chr>,
## # h9 <dbl+lbl>, h9esp <chr>, e1 <dbl+lbl>, e2a <dbl+lbl>, e2b <dbl+lbl>,
## # e2c <dbl+lbl>, e3 <dbl+lbl>, e4 <dbl+lbl>, e4esp <chr>, e5 <dbl+lbl>,
## # e5esp <chr>, e6a <dbl+lbl>, e6b <dbl+lbl>, e6c <dbl+lbl>, e6d <dbl+lbl>,
## # e7 <dbl+lbl>, e8nom <chr>, e8dir <chr>, e8com <chr>, e8com_cod <dbl+lbl>,
## # e8rbd <dbl>, e8dv <chr>, e8depen <dbl+lbl>, e8te <dbl+lbl>, e9 <dbl+lbl>,
## # e10 <dbl+lbl>, e11a <dbl+lbl>, e11b <dbl+lbl>, e11c <dbl+lbl>,
## # e11d <dbl+lbl>, e11e <dbl+lbl>, e12a <dbl+lbl>, e12b1 <dbl+lbl>,
## # e12b2 <dbl+lbl>, e12esp <chr>, e13pbu <dbl+lbl>, e13pbt <dbl+lbl>,
## # e13pbd <dbl+lbl>, e13pbm <dbl+lbl>, e13bu <dbl+lbl>, e13bt <dbl+lbl>,
## # e13bd <dbl+lbl>, e13bm <dbl+lbl>, e13bpc <dbl+lbl>, e13mu <dbl+lbl>,
## # e13mt <dbl+lbl>, e13md <dbl+lbl>, e13mm <dbl+lbl>, e14a <dbl+lbl>,
## # e14b <dbl+lbl>, e15 <dbl+lbl>, e16 <dbl+lbl>, e17t1 <dbl+lbl>,
## # e18m1 <dbl+lbl>, e18p1 <dbl+lbl>, e17t2 <dbl+lbl>, e18m2 <dbl+lbl>,
## # e18p2 <dbl+lbl>, e0 <dbl+lbl>, o1 <dbl+lbl>, o2 <dbl+lbl>, o3 <dbl+lbl>,
## # o4 <dbl+lbl>, o5 <dbl+lbl>, o6 <dbl+lbl>, o7r1 <dbl+lbl>, o7r2 <dbl+lbl>,
## # o8 <dbl+lbl>, o9a <chr>, oficio4 <chr+lbl>, oficio1 <dbl+lbl>, o9b <chr>,
## # o10 <dbl+lbl>, o11 <dbl+lbl>, o12 <dbl+lbl>, o13 <dbl+lbl>, o14 <dbl+lbl>,
## # o15 <dbl+lbl>, o16 <dbl+lbl>, o17 <dbl+lbl>, o18 <dbl+lbl>, o19 <dbl+lbl>,
## # o20 <dbl+lbl>, o21 <chr>, rama4_sub <chr+lbl>, rama1_sub <dbl+lbl>,
## # o22 <chr+lbl>, o23 <chr>, rama4 <chr+lbl>, rama1 <dbl+lbl>, o24 <chr+lbl>,
## # o25 <chr+lbl>, o26 <dbl+lbl>, o27 <dbl+lbl>, ...
Podemos cambiar los valores con datos dinámicos. Para ello antes debemos almacenar los valores concretos de los arreglos en variables.
a <- ecivil$valor[4]
b <- ecivil$categoria[4]
CASEN_2013_2 <- CASEN_2013 %>% mutate(ecivil = ifelse(ecivil == a, b, ecivil))
CASEN_2013_2
## # A tibble: 218,491 x 600
## folio o region comuna zona pco1 sexo edad ecivil h5l
## <dbl> <dbl> <dbl+l> <dbl+lbl> <dbl+l> <dbl+lb> <dbl+l> <dbl> <chr> <dbl>
## 1 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 36 Separ~ NA
## 2 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 10 [Her~ 2 [Muj~ 30 7 NA
## 3 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 1 [Hom~ 41 1 1
## 4 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 2 [Esp~ 2 [Muj~ 41 1 1
## 5 1.10e10 3 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 3 [Hij~ 2 [Muj~ 10 7 NA
## 6 1.10e10 4 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 3 [Hij~ 1 [Hom~ 9 7 NA
## 7 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 1 [Hom~ 73 1 1
## 8 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 2 [Esp~ 2 [Muj~ 73 1 1
## 9 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 60 7 NA
## 10 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 49 7 NA
## # ... with 218,481 more rows, and 590 more variables: h5h <dbl>,
## # pareja <dbl+lbl>, nucleo <dbl>, pco2 <dbl+lbl>, h8 <dbl+lbl>, h8esp <chr>,
## # h9 <dbl+lbl>, h9esp <chr>, e1 <dbl+lbl>, e2a <dbl+lbl>, e2b <dbl+lbl>,
## # e2c <dbl+lbl>, e3 <dbl+lbl>, e4 <dbl+lbl>, e4esp <chr>, e5 <dbl+lbl>,
## # e5esp <chr>, e6a <dbl+lbl>, e6b <dbl+lbl>, e6c <dbl+lbl>, e6d <dbl+lbl>,
## # e7 <dbl+lbl>, e8nom <chr>, e8dir <chr>, e8com <chr>, e8com_cod <dbl+lbl>,
## # e8rbd <dbl>, e8dv <chr>, e8depen <dbl+lbl>, e8te <dbl+lbl>, e9 <dbl+lbl>,
## # e10 <dbl+lbl>, e11a <dbl+lbl>, e11b <dbl+lbl>, e11c <dbl+lbl>,
## # e11d <dbl+lbl>, e11e <dbl+lbl>, e12a <dbl+lbl>, e12b1 <dbl+lbl>,
## # e12b2 <dbl+lbl>, e12esp <chr>, e13pbu <dbl+lbl>, e13pbt <dbl+lbl>,
## # e13pbd <dbl+lbl>, e13pbm <dbl+lbl>, e13bu <dbl+lbl>, e13bt <dbl+lbl>,
## # e13bd <dbl+lbl>, e13bm <dbl+lbl>, e13bpc <dbl+lbl>, e13mu <dbl+lbl>,
## # e13mt <dbl+lbl>, e13md <dbl+lbl>, e13mm <dbl+lbl>, e14a <dbl+lbl>,
## # e14b <dbl+lbl>, e15 <dbl+lbl>, e16 <dbl+lbl>, e17t1 <dbl+lbl>,
## # e18m1 <dbl+lbl>, e18p1 <dbl+lbl>, e17t2 <dbl+lbl>, e18m2 <dbl+lbl>,
## # e18p2 <dbl+lbl>, e0 <dbl+lbl>, o1 <dbl+lbl>, o2 <dbl+lbl>, o3 <dbl+lbl>,
## # o4 <dbl+lbl>, o5 <dbl+lbl>, o6 <dbl+lbl>, o7r1 <dbl+lbl>, o7r2 <dbl+lbl>,
## # o8 <dbl+lbl>, o9a <chr>, oficio4 <chr+lbl>, oficio1 <dbl+lbl>, o9b <chr>,
## # o10 <dbl+lbl>, o11 <dbl+lbl>, o12 <dbl+lbl>, o13 <dbl+lbl>, o14 <dbl+lbl>,
## # o15 <dbl+lbl>, o16 <dbl+lbl>, o17 <dbl+lbl>, o18 <dbl+lbl>, o19 <dbl+lbl>,
## # o20 <dbl+lbl>, o21 <chr>, rama4_sub <chr+lbl>, rama1_sub <dbl+lbl>,
## # o22 <chr+lbl>, o23 <chr>, rama4 <chr+lbl>, rama1 <dbl+lbl>, o24 <chr+lbl>,
## # o25 <chr+lbl>, o26 <dbl+lbl>, o27 <dbl+lbl>, ...
# hay que hacer dos ciclos for. uno para cada categorpia en una columna y otro para recorrelas.
#x <- c(1:8)
#for(i in x)
#{
CASEN_2013_2 <- CASEN_2013 %>% mutate(ecivil = ifelse(ecivil == 1, "casado", ecivil))
#CASEN_2013_2
CASEN_2013_3 <- CASEN_2013_2 %>% mutate(ecivil = ifelse(ecivil == 4, "marte", ecivil))
CASEN_2013_3
## # A tibble: 218,491 x 600
## folio o region comuna zona pco1 sexo edad ecivil h5l
## <dbl> <dbl> <dbl+l> <dbl+lbl> <dbl+l> <dbl+lb> <dbl+l> <dbl> <chr> <dbl>
## 1 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 36 marte NA
## 2 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 10 [Her~ 2 [Muj~ 30 7 NA
## 3 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 1 [Hom~ 41 casado 1
## 4 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 2 [Esp~ 2 [Muj~ 41 casado 1
## 5 1.10e10 3 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 3 [Hij~ 2 [Muj~ 10 7 NA
## 6 1.10e10 4 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 3 [Hij~ 1 [Hom~ 9 7 NA
## 7 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 1 [Hom~ 73 casado 1
## 8 1.10e10 2 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 2 [Esp~ 2 [Muj~ 73 casado 1
## 9 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 60 7 NA
## 10 1.10e10 1 1 [I. ~ 1101 [Iqu~ 1 [Urb~ 1 [Jef~ 2 [Muj~ 49 7 NA
## # ... with 218,481 more rows, and 590 more variables: h5h <dbl>,
## # pareja <dbl+lbl>, nucleo <dbl>, pco2 <dbl+lbl>, h8 <dbl+lbl>, h8esp <chr>,
## # h9 <dbl+lbl>, h9esp <chr>, e1 <dbl+lbl>, e2a <dbl+lbl>, e2b <dbl+lbl>,
## # e2c <dbl+lbl>, e3 <dbl+lbl>, e4 <dbl+lbl>, e4esp <chr>, e5 <dbl+lbl>,
## # e5esp <chr>, e6a <dbl+lbl>, e6b <dbl+lbl>, e6c <dbl+lbl>, e6d <dbl+lbl>,
## # e7 <dbl+lbl>, e8nom <chr>, e8dir <chr>, e8com <chr>, e8com_cod <dbl+lbl>,
## # e8rbd <dbl>, e8dv <chr>, e8depen <dbl+lbl>, e8te <dbl+lbl>, e9 <dbl+lbl>,
## # e10 <dbl+lbl>, e11a <dbl+lbl>, e11b <dbl+lbl>, e11c <dbl+lbl>,
## # e11d <dbl+lbl>, e11e <dbl+lbl>, e12a <dbl+lbl>, e12b1 <dbl+lbl>,
## # e12b2 <dbl+lbl>, e12esp <chr>, e13pbu <dbl+lbl>, e13pbt <dbl+lbl>,
## # e13pbd <dbl+lbl>, e13pbm <dbl+lbl>, e13bu <dbl+lbl>, e13bt <dbl+lbl>,
## # e13bd <dbl+lbl>, e13bm <dbl+lbl>, e13bpc <dbl+lbl>, e13mu <dbl+lbl>,
## # e13mt <dbl+lbl>, e13md <dbl+lbl>, e13mm <dbl+lbl>, e14a <dbl+lbl>,
## # e14b <dbl+lbl>, e15 <dbl+lbl>, e16 <dbl+lbl>, e17t1 <dbl+lbl>,
## # e18m1 <dbl+lbl>, e18p1 <dbl+lbl>, e17t2 <dbl+lbl>, e18m2 <dbl+lbl>,
## # e18p2 <dbl+lbl>, e0 <dbl+lbl>, o1 <dbl+lbl>, o2 <dbl+lbl>, o3 <dbl+lbl>,
## # o4 <dbl+lbl>, o5 <dbl+lbl>, o6 <dbl+lbl>, o7r1 <dbl+lbl>, o7r2 <dbl+lbl>,
## # o8 <dbl+lbl>, o9a <chr>, oficio4 <chr+lbl>, oficio1 <dbl+lbl>, o9b <chr>,
## # o10 <dbl+lbl>, o11 <dbl+lbl>, o12 <dbl+lbl>, o13 <dbl+lbl>, o14 <dbl+lbl>,
## # o15 <dbl+lbl>, o16 <dbl+lbl>, o17 <dbl+lbl>, o18 <dbl+lbl>, o19 <dbl+lbl>,
## # o20 <dbl+lbl>, o21 <chr>, rama4_sub <chr+lbl>, rama1_sub <dbl+lbl>,
## # o22 <chr+lbl>, o23 <chr>, rama4 <chr+lbl>, rama1 <dbl+lbl>, o24 <chr+lbl>,
## # o25 <chr+lbl>, o26 <dbl+lbl>, o27 <dbl+lbl>, ...
#}