Convert input to a factor.
The base function base::as.factor() is not a generic, but this variant
is. By default, to_factor() is a wrapper for base::as.factor().
Please note that to_factor() differs slightly from haven::as_factor()
method provided by haven package.
unlabelled(x) is a shortcut for to_factor(x, strict = TRUE, unclass = TRUE, labelled_only = TRUE).
to_factor(x, ...)
## S3 method for class 'haven_labelled'
to_factor(
x,
levels = c("labels", "values", "prefixed"),
ordered = FALSE,
nolabel_to_na = FALSE,
sort_levels = c("auto", "none", "labels", "values"),
decreasing = FALSE,
drop_unused_labels = FALSE,
user_na_to_na = FALSE,
strict = FALSE,
unclass = FALSE,
...
)
## S3 method for class 'data.frame'
to_factor(
x,
levels = c("labels", "values", "prefixed"),
ordered = FALSE,
nolabel_to_na = FALSE,
sort_levels = c("auto", "none", "labels", "values"),
decreasing = FALSE,
labelled_only = TRUE,
drop_unused_labels = FALSE,
strict = FALSE,
unclass = FALSE,
...
)
unlabelled(x, ...)x |
Object to coerce to a factor. |
... |
Other arguments passed down to method. |
levels |
What should be used for the factor levels: the labels, the values or labels prefixed with values? |
ordered |
|
nolabel_to_na |
Should values with no label be converted to |
sort_levels |
How the factor levels should be sorted? (see Details) |
decreasing |
Should levels be sorted in decreasing order? |
drop_unused_labels |
Should unused value labels be dropped?
(applied only if |
user_na_to_na |
Convert user defined missing values into |
strict |
Convert to factor only if all values have a defined label? |
unclass |
If not converted to a factor (when |
labelled_only |
for a data.frame, convert only labelled variables to factors? |
If some values doesn't have a label, automatic labels will be created, except if
nolabel_to_na is TRUE.
If sort_levels == 'values', the levels will be sorted according to the values of x.
If sort_levels == 'labels', the levels will be sorted according to labels' names.
If sort_levels == 'none', the levels will be in the order the value labels are defined
in x. If some labels are automatically created, they will be added at the end.
If sort_levels == 'auto', sort_levels == 'none' will be used, except if some
values doesn't have a defined label. In such case, sort_levels == 'values' will
be applied.
When applied to a data.frame, only labelled vectors are converted by default to a
factor. Use labelled_only = FALSE to convert all variables to factors.
unlabelled() is a shortcut for quickly removing value labels of a vector
or of a data.frame. If all observed values have a value label, then the vector
will be converted into a factor. Otherwise, the vector will be unclassed.
If you want to remove value labels in all cases, use remove_val_labels().
v <- labelled(c(1,2,2,2,3,9,1,3,2,NA), c(yes = 1, no = 3, "don't know" = 9))
to_factor(v)
to_factor(v, nolabel_to_na = TRUE)
to_factor(v, 'p')
to_factor(v, sort_levels = 'v')
to_factor(v, sort_levels = 'n')
to_factor(v, sort_levels = 'l')
x <- labelled(c('H', 'M', 'H', 'L'), c(low = 'L', medium = 'M', high = 'H'))
to_factor(x, ordered = TRUE)
# Strict conversion
v <- labelled(c(1, 1, 2, 3), labels = c(No = 1, Yes = 2))
to_factor(v)
to_factor(v, strict = TRUE) # Not converted because 3 does not have a label
to_factor(v, strict = TRUE, unclass = TRUE)
df <- data.frame(
a = labelled(c(1, 1, 2, 3), labels = c(No = 1, Yes = 2)),
b = labelled(c(1, 1, 2, 3), labels = c(No = 1, Yes = 2, DK = 3)),
c = labelled(c("a", "a", "b", "c"), labels = c(No = "a", Maybe = "b", Yes = "c")),
d = 1:4,
e = factor(c("item1", "item2", "item1", "item2")),
f = c("itemA", "itemA", "itemB", "itemB")
)
if (require(dplyr)) {
glimpse(df)
glimpse(unlabelled(df))
}Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.