fct_relevel {forcats}R Documentation

Reorder factor levels by hand

Description

This is a generalisaton of stats::relevel() that allows you to move any number of levels to any location.

Usage

fct_relevel(f, ..., after = 0L)

Arguments

f

A factor.

...

Character vector of levels. Any levels not mentioned will be left in existing order, after the explicitly mentioned levels.

after

Where should the new values be placed?

Examples

f <- factor(c("a", "b", "c", "d"))
fct_relevel(f)
fct_relevel(f, "c")
fct_relevel(f, "b", "a")

# Move to the third position
fct_relevel(f, "a", after = 2)

# Relevel to the end
fct_relevel(f, "a", after = Inf)
fct_relevel(f, "a", after = 3)

# Using 'Inf' allows you to relevel to the end when the number
# of levels is unknown or variable (e.g. vectorised operations)
df  <- forcats::gss_cat[, c("rincome", "denom")]
lapply(df, levels)

df2 <- lapply(df, fct_relevel, "Don't know", after = Inf)
lapply(df2, levels)

# You'll get a warning if the levels don't exist
fct_relevel(f, "e")

[Package forcats version 0.2.0 Index]