step_relevel creates a specification of a recipe step that will reorder the provided factor columns so that the level specified by ref_level is first. This is useful for contr.treatment contrasts which take the first level as the reference.

  role = NA,
  trained = FALSE,
  objects = NULL,
  skip = FALSE,
  id = rand_id("relevel")

# S3 method for step_relevel
tidy(x, ...)



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 that will be affected by the step. These variables should be character or factor types. See selections() for more details.


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


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


A single character value that will be used to relevel the factor column(s) (if the level is present).


A list of objects that contain the information on factor levels that will be determined by prep.recipe().


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


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


A step_relevel object.


An updated version of recipe with the new step added to the sequence of existing steps (if any).


The selected variables are releveled to a level (given by ref_level). Placing the ref_level in the first position.

Note that if the original columns are character, they will be converted to factors by this step.


library(modeldata) data(okc) rec <- recipe(~ diet + location, data = okc) %>% step_unknown(diet, new_level = "UNKNOWN") %>% step_relevel(diet, ref_level = "UNKNOWN") %>% prep() data <- bake(rec, okc) levels(data$diet)
#> [1] "UNKNOWN" "anything" "halal" #> [4] "kosher" "mostly anything" "mostly halal" #> [7] "mostly kosher" "mostly other" "mostly vegan" #> [10] "mostly vegetarian" "other" "strictly anything" #> [13] "strictly halal" "strictly kosher" "strictly other" #> [16] "strictly vegan" "strictly vegetarian" "vegan" #> [19] "vegetarian"