Nothing
#' @title Create recode pattern for 'rec' function
#' @name rec_pattern
#'
#' @description Convenient function to create a recode pattern for the
#' \code{\link{rec}} function, which recodes (numeric)
#' vectors into smaller groups.
#'
#' @param from Minimum value that should be recoded.
#' @param to Maximum value that should be recoded.
#' @param width Numeric, indicating the range of each group.
#' @param other String token, indicating how to deal with all other values
#' that have not been captured by the recode pattern. See 'Details'
#' on the \code{else}-token in \code{\link{rec}}.
#' @return A list with two values:
#' \describe{
#' \item{\code{pattern}}{string pattern that can be used as \code{rec} argument for the \code{\link{rec}}-function.}
#' \item{\code{labels}}{the associated values labels that can be used with \code{\link[sjlabelled]{set_labels}}.}
#' }
#'
#' @seealso \code{\link{group_var}} for recoding variables into smaller groups, and
#' \code{\link{group_labels}} to create the asssociated value labels.
#'
#' @examples
#' rp <- rec_pattern(1, 100)
#' rp
#'
#' # sample data, inspect age of carers
#' data(efc)
#' table(efc$c160age, exclude = NULL)
#' table(rec(efc$c160age, rec = rp$pattern), exclude = NULL)
#'
#' # recode carers age into groups of width 5
#' x <- rec(
#' efc$c160age,
#' rec = rp$pattern,
#' val.labels = rp$labels
#' )
#' # watch result
#' frq(x)
#'
#' @export
rec_pattern <- function(from, to, width = 5, other = NULL){
# init variables
rec.pat <- c()
rec.labels <- c()
# create sequence of recode-groups
values <- seq(from, to + width, by = width)
# create pattern for each group
for (x in seq_len(length(values) - 1)) {
rec.pat <- paste0(rec.pat,
sprintf("%i:%i=%i", values[x], values[x + 1] - 1, x),
sep = ";")
# also create associated labels
rec.labels <- c(rec.labels, sprintf("%i-%i", values[x], values[x + 1] - 1))
}
# do we have an "else"-token?
if (!is.null(other) && !sjmisc::is_empty(other))
rec.pat <- paste0(rec.pat, "else=", other, sep = "")
# name labels
names(rec.labels) <- seq_len(length(values) - 1)
# return results
list(pattern = rec.pat, labels = rec.labels)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.