Learn R Programming

recipes (version 1.1.0)

step_string2factor: Convert strings to factors

Description

step_string2factor() will convert one or more character vectors to factors (ordered or unordered).

Use this step only in special cases (see Details) and instead convert strings to factors before using any tidymodels functions.

Usage

step_string2factor(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  levels = NULL,
  ordered = FALSE,
  skip = FALSE,
  id = rand_id("string2factor")
)

Value

An updated version of recipe with the new step added to the sequence of any existing operations.

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 selections() for more details.

role

Not used by this step since no new variables are created.

trained

A logical to indicate if the quantities for preprocessing have been estimated.

levels

An options specification of the levels to be used for the new factor. If left NULL, the sorted unique values present when bake is called will be used.

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()? While all operations are baked when prep() 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.

id

A character string that is unique to this step to identify it.

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, are factors ordered

id

character, id of this step

Case weights

The underlying operation does not allow for case weights.

Details

When should you use this step?

In most cases, if you are planning to use step_string2factor() without setting levels, you will be better off converting those character variables to factor variables before using a recipe.

This can be done using dplyr with the following code

df <- mutate(df, across(where(is.character), as.factor))

During resampling, the complete set of values might not be in the character data. Converting them to factors with step_string2factor() then will misconfigure the levels.

If the levels argument to step_string2factor()is used, it will convert all variables affected by this step to have the same levels. Because of this, you will need to know the full set of level when you define the recipe.

Also, note that prep() has an option strings_as_factors that defaults to TRUE. This should be changed so that raw character data will be applied to step_string2factor(). However, this step can also take existing factors (but will leave them as-is).

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_num2factor(), step_ordinalscore(), step_other(), step_regex(), step_relevel(), step_time(), step_unknown(), step_unorder()

Examples

Run this code
data(Sacramento, package = "modeldata")

# convert factor to string to demonstrate
Sacramento$city <- as.character(Sacramento$city)

rec <- recipe(~ city + zip, data = Sacramento)

make_factor <- rec %>%
  step_string2factor(city)

make_factor <- prep(make_factor,
  training = Sacramento
)

make_factor

# note that `city` is a factor in recipe output
bake(make_factor, new_data = NULL) %>% head()

# ...but remains a string in the data
Sacramento %>% head()

Run the code above in your browser using DataLab