Skip to contents

Sort levels of a factor from most observed to least observed. Useful for truly categorical data when you wish to plot it with visually monotonic barplots. If there are ties, then it sorts the tie groups alphabetically.

Usage

sort_levels(x, desc = TRUE, desc_ties = FALSE)

Arguments

x

A vector of class factor.

desc

TRUE or FALSE. TRUE goes from most to least observed (descending). FALSE goes from least to most observed (ascending).

desc_ties

TRUE or FALSE. If there are ties in counts, then TRUE sorts those groups from z to a (descending), and FALSE sorts from a to z (ascending).

Value

factor vector of length x

Examples

#----------------------------------------------------------------------------
# sort_levels() examples.
#----------------------------------------------------------------------------
library(bkmisc)

# case for ties in counts
tmp <- factor(c("a", "a", "a", "b", "b", "b", "c"), levels = c("c", "b", "a"))
tmp
#> [1] a a a b b b c
#> Levels: c b a
sort_levels(tmp, desc = TRUE, desc_ties = FALSE)
#> [1] a a a b b b c
#> Levels: a b c
sort_levels(tmp, desc = TRUE, desc_ties = TRUE)
#> [1] a a a b b b c
#> Levels: b a c
sort_levels(tmp, desc = FALSE, desc_ties = FALSE)
#> [1] a a a b b b c
#> Levels: c a b
sort_levels(tmp, desc = FALSE, desc_ties = TRUE)
#> [1] a a a b b b c
#> Levels: c b a

# no ties in counts
tmp <- factor(c("a", "a", "a", "b", "b", "c"), levels = c("c", "b", "a"))
tmp
#> [1] a a a b b c
#> Levels: c b a
sort_levels(tmp, desc = TRUE)
#> [1] a a a b b c
#> Levels: a b c
sort_levels(tmp, desc = FALSE)
#> [1] a a a b b c
#> Levels: c b a