Convert variable into factor and keep value labels
This function converts a variable into a factor, but preserves variable and value label attributes.
as_factor(x, ...) to_factor(x, ...) ## S3 method for class 'data.frame' as_factor(x, ..., add.non.labelled = 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 |
as_factor
converts numeric values into a factor with numeric
levels. as_label
, however, converts a vector into
a factor and uses value labels as factor levels.
A factor, including variable and value labels. If x
is a data frame, the complete data frame x
will be returned,
where variables specified in ...
are coerced
to factors (including variable and value labels);
if ...
is not specified, applies to all variables in the
data frame.
This function is intended for use with vectors that have value and variable
label attributes. Unlike as.factor
, as_factor
converts
a variable into a factor and preserves the value and variable label attributes.
Adding label attributes is automatically done by importing data sets
with one of the read_*
-functions, like read_spss
.
Else, value and variable labels can be manually added to vectors
with set_labels
and set_label
.
if (require("sjmisc") && require("magrittr")) { data(efc) # normal factor conversion, loses value attributes x <- as.factor(efc$e42dep) frq(x) # factor conversion, which keeps value attributes x <- as_factor(efc$e42dep) frq(x) # create partially labelled vector x <- set_labels( efc$e42dep, labels = c( `1` = "independent", `4` = "severe dependency", `9` = "missing value" )) # only copy existing value labels as_factor(x) %>% head() get_labels(as_factor(x), values = "p") # also add labels to non-labelled values as_factor(x, add.non.labelled = TRUE) %>% head() get_labels(as_factor(x, add.non.labelled = TRUE), values = "p") # easily coerce specific variables in a data frame to factor # and keep other variables, with their class preserved as_factor(efc, e42dep, e16sex, c172code) %>% head() # use select-helpers from dplyr-package if (require("dplyr")) { as_factor(efc, contains("cop"), c161sex:c175empl) %>% head() } }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.