Get / Set value labels
val_labels(x, prefixed = FALSE)
val_labels(x) <- value
val_label(x, v, prefixed = FALSE)
val_label(x, v) <- value
set_value_labels(.data, ..., .labels = NA, .strict = TRUE)
add_value_labels(.data, ..., .strict = TRUE)
remove_value_labels(.data, ..., .strict = TRUE)
A vector or a data.frame
Should labels be prefixed with values?
A named vector for val_labels()
(see haven::labelled()
) or a character string
for val_label()
. NULL
to remove the labels.
For data frames, it could also be a named list with a vector of value labels per variable.
A single value.
a data frame
name-value pairs of value labels (see examples)
value labels to be applied to the data.frame,
using the same syntax as value
in val_labels(df) <- value
.
should an error be returned if some labels
doesn't correspond to a column of x
?
val_labels()
will return a named vector.
val_label()
will return a single character string.
set_value_labels()
, add_value_labels()
and remove_value_labels()
will return an updated
copy of .data
.
set_value_labels()
, add_value_labels()
and remove_value_labels()
could be used with dplyr syntax.
While set_value_labels()
will replace the list of value labels,
add_value_labels()
and remove_value_labels()
will update that list (see examples).
v <- labelled(c(1,2,2,2,3,9,1,3,2,NA), c(yes = 1, no = 3, "don't know" = 9))
val_labels(v)
#> yes no don't know
#> 1 3 9
val_labels(v, prefixed = TRUE)
#> [1] yes [3] no [9] don't know
#> 1 3 9
val_label(v, 2)
#> NULL
val_label(v, 2) <- 'maybe'
val_label(v, 9) <- NULL
val_labels(v) <- NULL
if (require(dplyr)) {
# setting value labels
df <- tibble(s1 = c("M", "M", "F"), s2 = c(1, 1, 2)) %>%
set_value_labels(s1 = c(Male = "M", Female = "F"), s2 = c(Yes = 1, No = 2))
val_labels(df)
# updating value labels
df <- df %>% add_value_labels(s2 = c(Unknown = 9))
df$s2
# removing a value labels
df <- df %>% remove_value_labels(s2 = 9)
df$s2
# removing all value labels
df <- df %>% set_value_labels(s2 = NULL)
df$s2
}
#> [1] 1 1 2