Convert variable into factor with associated value labels
as_label()
converts (replaces) values of a variable (also of factors
or character vectors) with their associated value labels. Might
be helpful for factor variables.
For instance, if you have a Gender variable with 0/1 value, and associated
labels are male/female, this function would convert all 0 to male and
all 1 to female and returns the new variable as factor.
as_character()
does the same as as_label()
, but returns
a character vector.
as_character(x, ...) to_character(x, ...) ## S3 method for class 'data.frame' as_character( x, ..., add.non.labelled = FALSE, prefix = FALSE, var.label = NULL, drop.na = TRUE, drop.levels = FALSE, keep.labels = FALSE ) as_label(x, ...) to_label(x, ...) ## S3 method for class 'data.frame' as_label( x, ..., add.non.labelled = FALSE, prefix = FALSE, var.label = NULL, drop.na = TRUE, drop.levels = FALSE, keep.labels = FALSE )
x |
A vector or data frame. |
... |
Optional, unquoted names of variables that should be selected for
further processing. Required, if |
add.non.labelled |
Logical, if |
prefix |
Logical, if |
var.label |
Optional string, to set variable label attribute for the
returned variable (see vignette Labelled Data and the sjlabelled-Package).
If |
drop.na |
Logical, if |
drop.levels |
Logical, if |
keep.labels |
Logical, if |
See 'Details' in get_na
.
A factor with the associated value labels as factor levels. If x
is a data frame, the complete data frame x
will be returned,
where variables specified in ...
are coerced to factors;
if ...
is not specified, applies to all variables in the
data frame. as_character()
returns a character vector.
Value label attributes (see get_labels
)
will be removed when converting variables to factors.
data(efc) print(get_labels(efc)['c161sex']) head(efc$c161sex) head(as_label(efc$c161sex)) print(get_labels(efc)['e42dep']) table(efc$e42dep) table(as_label(efc$e42dep)) head(efc$e42dep) head(as_label(efc$e42dep)) # structure of numeric values won't be changed # by this function, it only applies to labelled vectors # (typically categorical or factor variables) str(efc$e17age) str(as_label(efc$e17age)) # factor with non-numeric levels as_label(factor(c("a", "b", "c"))) # factor with non-numeric levels, prefixed x <- factor(c("a", "b", "c")) x <- set_labels(x, labels = c("ape", "bear", "cat")) as_label(x, prefix = TRUE) # create vector x <- c(1, 2, 3, 2, 4, NA) # add less labels than values x <- set_labels( x, labels = c("yes", "maybe", "no"), force.labels = FALSE, force.values = FALSE ) # convert to label w/o non-labelled values as_label(x) # convert to label, including non-labelled values as_label(x, add.non.labelled = TRUE) # create labelled integer, with missing flag if (require("haven")) { x <- labelled( c(1:3, tagged_na("a", "c", "z"), 4:1, 2:3), c("Agreement" = 1, "Disagreement" = 4, "First" = tagged_na("c"), "Refused" = tagged_na("a"), "Not home" = tagged_na("z")) ) # to labelled factor, with missing labels as_label(x, drop.na = FALSE) # to labelled factor, missings removed as_label(x, drop.na = TRUE) # keep missings, and use non-labelled values as well as_label(x, add.non.labelled = TRUE, drop.na = FALSE) } # convert labelled character to factor dummy <- c("M", "F", "F", "X") dummy <- set_labels( dummy, labels = c(`M` = "Male", `F` = "Female", `X` = "Refused") ) get_labels(dummy,, "p") as_label(dummy) # drop unused factor levels, but preserve variable label x <- factor(c("a", "b", "c"), levels = c("a", "b", "c", "d")) x <- set_labels(x, labels = c("ape", "bear", "cat")) set_label(x) <- "A factor!" x as_label(x, drop.levels = TRUE) # change variable label as_label(x, var.label = "New variable label!", drop.levels = TRUE) # convert to numeric and back again, preserving label attributes # *and* values in numeric vector x <- c(0, 1, 0, 4) x <- set_labels(x, labels = c(`null` = 0, `one` = 1, `four` = 4)) # to factor as_label(x) # to factor, back to numeric - values are 1, 2 and 3, # instead of original 0, 1 and 4 as_numeric(as_label(x)) # preserve label-attributes when converting to factor, use these attributes # to restore original numeric values when converting back to numeric as_numeric(as_label(x, keep.labels = TRUE), use.labels = TRUE) # easily coerce specific variables in a data frame to factor # and keep other variables, with their class preserved as_label(efc, e42dep, e16sex, c172code)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.