R: Convert Numbers to Factors

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 = NULL, ordered = FALSE, skip = FALSE)

    ## S3 method for class 'step_num2factor'
    tidy(x, ...)

### 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 which variables will converted to factors. See `selections()` for more details. For the `tidy` method, these are not currently used.
`role` | Not used by this step since no new variables are created.
`transform` | A function taking a single argument `x` that can be used to modify the numeric values prior to determining the levels (perhaps using `base::paste()` or `base::format()`).
`trained` | A logical to indicate if the quantities for preprocessing have been estimated.
`levels` | A list of values that will be used as the levels. These are the numeric data converted to character and ordered. This is `NULL` until computed by `prep.recipe()`.
`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 `bake.recipe()`? While all operations are baked when `prep.recipe()` is run, some operations may not be able to be conducted on new data (e.g. processing the outcome variable(s)). Care should be taken when using `skip = TRUE` as it may affect the computations for subsequent operations
`x` | A `step_num2factor` object.

### Value

An updated version of `recipe` with the new step added to the sequence of existing steps (if any). For the `tidy` method, a tibble with columns `terms` (the selectors or variables selected) and `ordered`.

### Note

If `bake` is used on a data set where a new value is in the column being converted, `bake` will silently give values of `NA` to these rows (see the example below).

### See Also

`step_factor2string()`, `step_string2factor()`, `step_dummy()`

### Examples

    iris2 <- iris
    iris2$Species <- as.numeric(iris2$Species)

    rec <- recipe(~ ., data = iris2)

    make_factor <- rec %>% step_num2factor(Species)
    make_factor <- prep(make_factor,
                        training = iris2,
                        retain = TRUE)

    # note that `diet` is a factor
    juice(make_factor) %>% head
    okc %>% head
    tidy(make_factor, number = 1)

    # When novel values are exposed
    with_transform <- rec %>%
      step_num2factor(Species, transform = function(x) paste0("val_", x))

    with_transform <- prep(with_transform,
                           training = iris2[1:75,])
    new_values <- bake(with_transform, newdata = iris2, Species)
    table(new_values[["Species"]], iris2$Species, useNA = "ifany")

[Package recipes version 0.1.2 Index]