## ----include = FALSE------------------------------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  error = FALSE
)

## ----setup----------------------------------------------------------------------------------------
library(eatGADS)
data_path <- system.file("extdata", "multipleChoice.sav", package = "eatGADS")
gads <- import_spss(data_path)

# Show example data set
gads

## ----recode2NA------------------------------------------------------------------------------------
gads <- recode2NA(gads, value = "")

## ----lookup---------------------------------------------------------------------------------------
lookup <- createLookup(GADSdat = gads, recodeVars = "stringvar", sort_by = 'value', 
                       addCols = c("language", "language2", "language3"))

lookup

## ----lookup export, eval=FALSE--------------------------------------------------------------------
#  # write lookup table to Excel
#  eatAnalysis::write_xlsx(lookup, "lookup_forcedChoice.xlsx")

## ----lookup import export, eval=FALSE-------------------------------------------------------------
#  # write lookup table to Excel
#  eatAnalysis::write_xlsx(lookup, "lookup_multipleChoice.xlsx")
#  
#  ### perform recodes in Excel sheet!
#  
#  # read lookup table back to R
#  lookup <- readxl::read_xlsx("lookup_multipleChoice.xlsx")
#  lookup

## ----editing lookup, echo = FALSE-----------------------------------------------------------------
lookup$language <- c(NA, NA, "English", "German", "German", 
                     "Polish", -96, "English", "German", "Polish")
lookup$language2 <- c(NA, NA, "Polish", NA, NA, 
                      "Italian", -96, "Italian", "Polish", NA)
lookup$language3 <- c(NA, NA, "Italian", NA, NA, 
                      "German", -96, NA, NA, NA)
lookup

## ----integrate the lookup table-------------------------------------------------------------------
gads_string <- applyLookup_expandVar(GADSdat = gads, lookup = lookup)

gads_string$dat

## ----label missings from lookup table-------------------------------------------------------------
for(nam in paste0("stringvar_", 1:3)) {
  gads_string <- changeValLabels(gads_string, varName = nam, 
                                 value = -96, valLabel = "Missing: Not codeable")
  gads_string <- changeMissings(gads_string, varName = nam, 
                                value = -96, missings = "miss")
}

gads_string$labels

## ----named character vector-----------------------------------------------------------------------
value_string <- c(lookup$language, lookup$language2, lookup$language3)
named_char_vec <- matchValues_varLabels(GADSdat = gads_string, 
                                        mc_vars = c("mcvar1", "mcother"), 
                                        values = value_string, 
                                        label_by_hand = c("other"="mcother"))
named_char_vec

## ----collapse-------------------------------------------------------------------------------------
gads_string2 <- collapseMultiMC_Text(GADSdat = gads_string, mc_vars = named_char_vec, 
                                     text_vars = c("stringvar_1", "stringvar_2", "stringvar_3"), 
                                     mc_var_4text = "mcother", var_suffix = "_r", 
                                     label_suffix = "(recoded)",
                                     invalid_miss_code = -98, 
                                     invalid_miss_label = "Missing: By intention",
                                     notext_miss_code = -99, 
                                     notext_miss_label = "Missing: By intention")

gads_string2$dat

## ----remove2NAchar--------------------------------------------------------------------------------
gads_string3 <- remove2NAchar(GADSdat = gads_string2, 
                              vars = c("stringvar_1_r", "stringvar_2_r", "stringvar_3_r"), 
                              max_num = 2, na_value = -97, 
                              na_label = "missing: excessive answers")

gads_string3$dat

## ----multiChar2fac--------------------------------------------------------------------------------
gads_numeric <- multiChar2fac(GADSdat = gads_string3, vars = c("stringvar_1_r", "stringvar_2_r"), 
                              var_suffix = "_r", label_suffix = "(recoded)")

gads_numeric$dat

gads_final <- gads_numeric
extractMeta(gads_final)[, c("varName", "value", "valLabel", "missings")]

## ----remove vars----------------------------------------------------------------------------------
gads_final2 <- removeVars(gads_final, vars = c("stringvar_1", "stringvar_2", "stringvar_3",
                                               "stringvar_1_r", "stringvar_2_r"))