Harmonize the values and labels of labelled vectors

harmonize_values(
  x,
  harmonize_label = NULL,
  harmonize_labels = NULL,
  na_values = c(do_not_know = 99997, declined = 99998, inap = 99999),
  na_range = NULL,
  id = "survey_id",
  name_orig = NULL,
  remove = NULL,
  perl = FALSE
)

Arguments

x

A labelled vector

harmonize_label

A character vector of 1L containing the new, harmonize variable label. Defaults to NULL, in which case it uses the variable label of x, unless it is also NULL.

harmonize_labels

A list of harmonization values

na_values

A named vector of na_values, the observations that are defined to be treated as missing in the SPSS-style coding.

na_range

A min, max range of na_range, the continuous missing value range. In most surveys this should be left NULL.

id

A survey ID, defaults to survey_id

name_orig

The original name of the variable. If left NULL it uses the latest name of the object x.

remove

Defaults to NULL. A character or regex that will be removed from all old value labels, like "\("|\) for ( and ).

perl

Use perl-like regex? Defaults to FALSE.

Value

A labelled vector that contains in its metadata attributes the original labelling, the original numeric coding and the current labelling, with the numerical values representing the harmonized coding.

See also

Other variable label harmonization functions: harmonize_waves(), label_normalize(), na_range_to_values()

Other harmonization functions: collect_val_labels(), harmonize_na_values(), harmonize_var_names(), label_normalize(), suggest_permanent_names(), suggest_var_names()

Examples

var1 <- labelled::labelled_spss( x = c(1,0,1,1,0,8,9), labels = c("TRUST" = 1, "NOT TRUST" = 0, "DON'T KNOW" = 8, "INAP. HERE" = 9), na_values = c(8,9)) harmonize_values ( var1, harmonize_labels = list ( from = c("^tend\\sto|^trust", "^tend\\snot|not\\strust", "^dk|^don", "^inap"), to = c("trust", "not_trust", "do_not_know", "inap"), numeric_values = c(1,0,99997, 99999)), na_values = c("do_not_know" = 99997, "inap" = 99999), id = "survey_id" )
#> Warning: There are values exceeding 99990, these may be mising values.
#> Warning: 'x' is NULL so the result will be NULL
#> Error in ans[npos] <- rep(no, length.out = len)[npos]: replacement has length zero