This is useful when the levels of an ordered factor are actually cyclical, with different conventions on the starting point.
Examples
x <- factor(
c("Mon", "Tue", "Wed"),
levels = c("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"),
ordered = TRUE
)
x
#> [1] Mon Tue Wed
#> Levels: Sun < Mon < Tue < Wed < Thu < Fri < Sat
fct_shift(x)
#> [1] Mon Tue Wed
#> Levels: Mon < Tue < Wed < Thu < Fri < Sat < Sun
fct_shift(x, 2)
#> [1] Mon Tue Wed
#> Levels: Tue < Wed < Thu < Fri < Sat < Sun < Mon
fct_shift(x, -1)
#> [1] Mon Tue Wed
#> Levels: Sat < Sun < Mon < Tue < Wed < Thu < Fri