library(reprex)
library(dplyr)
#> Warning: package 'dplyr' was built under R version 3.5.3
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(codebook)
#> Warning: package 'codebook' was built under R version 3.5.3
library(labelled)
#> Warning: package 'labelled' was built under R version 3.5.3
df <- data_frame(s1 = c("M", "M", "F"),
s2 = c("1", "1", "2"))
#> Warning: `data_frame()` is deprecated, use `tibble()`.
#> This warning is displayed once per session.
dict <- data_frame(variable = c("s1","s2"),
label = c("gender","alive"),
value_labels= c("Male=M,F=Female","Yes=1,No=2"))
var_label(df) <- dict %>% select(variable, label) %>% dict_to_list()
var_label(df)
#> $s1
#> [1] "gender"
#>
#> $s2
#> [1] "alive"
#Similarly I would like to label the values
#instead of using my current mechanical approach as exemplified below
val_labels(df$s1) <- c("M" = "Male", "F" = "Female")
val_labels(df$s2) <- c("1" = "Male", "2" = "Female")
val_labels(df)
#> $s1
#> M F
#> "Male" "Female"
#>
#> $s2
#> 1 2
#> "Male" "Female"
Created on 2019-06-27 by the reprex package (v0.2.1)