[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"