step_num2factor {recipes} | R Documentation |
Convert numbers to factors
Description
step_num2factor()
will convert one or more numeric vectors to factors
(ordered or unordered). This can be useful when categories are encoded as
integers.
Usage
step_num2factor(
recipe,
...,
role = NA,
transform = function(x) x,
trained = FALSE,
levels,
ordered = FALSE,
skip = FALSE,
id = rand_id("num2factor")
)
Arguments
recipe |
A recipe object. The step will be added to the sequence of operations for this recipe. |
... |
One or more selector functions to choose variables
for this step. See |
role |
Not used by this step since no new variables are created. |
transform |
A function taking a single argument |
trained |
A logical to indicate if the quantities for preprocessing have been estimated. |
levels |
A character vector of values that will be used as the levels.
These are the numeric data converted to character and ordered. This is
modified once |
ordered |
A single logical value; should the factor(s) be ordered? |
skip |
A logical. Should the step be skipped when the
recipe is baked by |
id |
A character string that is unique to this step to identify it. |
Value
An updated version of recipe
with the new step added to the
sequence of any existing operations.
Tidying
When you tidy()
this step, a tibble is returned with
columns terms
, ordered
, and id
:
- terms
character, the selectors or variables selected
- ordered
logical, were the factor(s) ordered
- id
character, id of this step
Case weights
The underlying operation does not allow for case weights.
See Also
Other dummy variable and encoding steps:
step_bin2factor()
,
step_count()
,
step_date()
,
step_dummy()
,
step_dummy_extract()
,
step_dummy_multi_choice()
,
step_factor2string()
,
step_holiday()
,
step_indicate_na()
,
step_integer()
,
step_novel()
,
step_ordinalscore()
,
step_other()
,
step_regex()
,
step_relevel()
,
step_string2factor()
,
step_time()
,
step_unknown()
,
step_unorder()
Examples
library(dplyr)
data(attrition, package = "modeldata")
attrition %>%
group_by(StockOptionLevel) %>%
count()
amnt <- c("nothin", "meh", "some", "copious")
rec <-
recipe(Attrition ~ StockOptionLevel, data = attrition) %>%
step_num2factor(
StockOptionLevel,
transform = function(x) x + 1,
levels = amnt
)
encoded <- rec %>%
prep() %>%
bake(new_data = NULL)
table(encoded$StockOptionLevel, attrition$StockOptionLevel)
# an example for binning
binner <- function(x) {
x <- cut(x, breaks = 1000 * c(0, 5, 10, 20), include.lowest = TRUE)
# now return the group number
as.numeric(x)
}
inc <- c("low", "med", "high")
rec <-
recipe(Attrition ~ MonthlyIncome, data = attrition) %>%
step_num2factor(
MonthlyIncome,
transform = binner,
levels = inc,
ordered = TRUE
) %>%
prep()
encoded <- bake(rec, new_data = NULL)
table(encoded$MonthlyIncome, binner(attrition$MonthlyIncome))
# What happens when a value is out of range?
ceo <- attrition %>%
slice(1) %>%
mutate(MonthlyIncome = 10^10)
bake(rec, ceo)