Skip to contents

Reorder the levels of a categorical variable either manually or automatically

Usage

reorder_levels(
  data,
  var,
  new_levels = NULL,
  auto = c("freq", "order", "seq"),
  name = NULL
)

Arguments

data

a dataframe to reorder

var

a categorical variable to reorder

new_levels

a character vector of the new factor order; overrides auto if not NULL

auto

only meaningful if new_levels is NULL: the method to auto-reorder the levels, see fct_inorder

name

name for the new variable

Value

original dataframe containing a new column of the reordered categorical variable with tidyverse code attached

See also

Author

Zhaoming Su

Examples

reordered <- reorder_levels(iris,
    var = "Species",
    new_levels = c("versicolor", "virginica", "setosa")
)
cat(code(reordered))
#> iris |> dplyr::mutate(Species.reord = factor(Species, c("versicolor",   "virginica", "setosa")), .after = Species)
head(reordered)
#>   Sepal.Length Sepal.Width Petal.Length Petal.Width Species Species.reord
#> 1          5.1         3.5          1.4         0.2  setosa        setosa
#> 2          4.9         3.0          1.4         0.2  setosa        setosa
#> 3          4.7         3.2          1.3         0.2  setosa        setosa
#> 4          4.6         3.1          1.5         0.2  setosa        setosa
#> 5          5.0         3.6          1.4         0.2  setosa        setosa
#> 6          5.4         3.9          1.7         0.4  setosa        setosa

reordered <- reorder_levels(iris,
    var = "Species",
    auto = "freq"
)
cat(code(reordered))
#> iris |> dplyr::mutate(Species.reord = forcats::fct_infreq(Species), .after = Species)
head(reordered)
#>   Sepal.Length Sepal.Width Petal.Length Petal.Width Species Species.reord
#> 1          5.1         3.5          1.4         0.2  setosa        setosa
#> 2          4.9         3.0          1.4         0.2  setosa        setosa
#> 3          4.7         3.2          1.3         0.2  setosa        setosa
#> 4          4.6         3.1          1.5         0.2  setosa        setosa
#> 5          5.0         3.6          1.4         0.2  setosa        setosa
#> 6          5.4         3.9          1.7         0.4  setosa        setosa