martinctc
11/22/2017 - 11:34 PM

[Dealing with SPSS-style labels with sjlabelled and pipes] A micro-vignette #R

[Dealing with SPSS-style labels with sjlabelled and pipes] A micro-vignette #R

library(sjlabelled)
library(tidyverse)
library(haven)

# Simulate data set

sample(c(0,1),100,replace=TRUE) %>%
  matrix(20,5) %>%
  data.frame() -> df

# An example of how to apply value labels to a few select variables, and check that it's applied
df %>%
  add_labels(X1,X2, labels=c("Yes"=1,"No"=0)) %>% # apply data labels to certain values only
  get_labels() # See data frame labels

# Rename variable labels
df %>%
  var_labels(X1="Apple",
             X2="Bananas",
             X3="Cranberries",
             X4="Durian",
             X5="Eggplant") -> df.2

# Add value labels to variables
# Use add_labels() to preserve remaining labels unspecified in the argument

df.2 %>% # Use select helpers to apply to certain variables
  set_labels(starts_with("X"), labels=c("Eaten"=1,"Not eaten"=0)) -> df.3

# Export result as SAV file
sjlabelled::write_spss(df.3,"Tester.sav")


#########################################################
# Check that our SPSS file contains the labels we wanted to show! 

# View variable labels
read_spss("Tester.sav") %>%
  get_label()

# X1            X2            X3            X4            X5 
# "Apple"     "Bananas" "Cranberries"      "Durian"    "Eggplant" 

# View value labels for each variable

read_spss("Tester.sav") %>%
  get_labels()

# $X1
# [1] "Not eaten" "Eaten"    
# 
# $X2
# [1] "Not eaten" "Eaten"    
# 
# $X3
# [1] "Not eaten" "Eaten"    
# 
# $X4
# [1] "Not eaten" "Eaten"    
# 
# $X5
# [1] "Not eaten" "Eaten"