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>, ...
#}