R/drop_unused_value_labels.R

Defines functions drop_unused_value_labels.data.frame drop_unused_value_labels.haven_labelled drop_unused_value_labels.default drop_unused_value_labels

Documented in drop_unused_value_labels

#' Drop unused value labels
#'
#' Drop value labels associated to a value not present in the data.
#'
#' @param x A vector or a data frame.
#' @examples
#' x <- labelled(c(1, 2, 2, 1), c(yes = 1, no = 2, maybe = 3))
#' x
#' drop_unused_value_labels(x)
#' @export
drop_unused_value_labels <- function(x) {
  UseMethod("drop_unused_value_labels")
}


#' @export
drop_unused_value_labels.default <- function(x) {
  # do nothing
  x
}

#' @export
drop_unused_value_labels.haven_labelled <- function(x) {
  vl <- val_labels(x)
  val_labels(x) <- vl[vl %in% unique(x)]
  x
}


#' @export
drop_unused_value_labels.data.frame <- function(x) {
  x[] <- lapply(x, drop_unused_value_labels)
  x
}

Try the labelled package in your browser

Any scripts or data that you put into this service are public.

labelled documentation built on July 9, 2023, 7:53 p.m.