Labeling a dataset using a data dictionary

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)

1 Like

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.