Harmonize the values of surveys. It binds together variables that are all present in the surveys, and applies a harmonization function on them.

harmonize_waves(waves, .f, status_message = FALSE)

Arguments

waves

A list of surveys

.f

A function to apply for the harmonization.

status_message

Defaults to FALSE. If set to TRUE it shows the id of the survey that is being joined.

Value

A natural full join of all surveys into a data frame.

See also

Examples

# \donttest{ examples_dir <- system.file("examples", package = "retroharmonize") survey_list <- dir(examples_dir)[grepl("\\.rds", dir(examples_dir))] example_surveys <- read_surveys( file.path( examples_dir, survey_list), save_to_rds = FALSE) metadata <- lapply ( X = example_surveys, FUN = metadata_create ) metadata <- do.call(rbind, metadata) to_harmonize <- metadata %>% dplyr::filter ( var_name_orig %in% c("rowid", "w1") | grepl("trust ", label_orig ) ) %>% dplyr::mutate ( var_label = var_label_normalize(label_orig)) %>% dplyr::mutate ( var_name = val_label_normalize(var_label)) harmonize_eb_trust <- function(x) { label_list <- list( from = c("^tend\\snot", "^cannot", "^tend\\sto", "^can\\srely", "^dk", "^inap", "na"), to = c("not_trust", "not_trust", "trust", "trust", "do_not_know", "inap", "inap"), numeric_values = c(0,0,1,1, 99997,99999,99999) ) harmonize_values(x, harmonize_labels = label_list, na_values = c("do_not_know"=99997, "declined"=99998, "inap"=99999) ) } merged_surveys <- merge_waves ( example_surveys, var_harmonization = to_harmonize ) harmonized <- harmonize_waves(waves = merged_surveys, .f = harmonize_eb_trust, status_message = FALSE) # For details see Afrobarometer and Eurobarometer Case Study vignettes. # }