Making an Ordered Factor

The following code creates a vector called sizes from small to extra-large

set.seed(23)
sizes<-sample(c("small","medium","large","extra-large"),50,replace=T)

Here I made the attempt to create ordered levels by first creating the factor and then use order to the factor I have created. When displaying the output, I see that they are separated by size. How can I create four order pairs, where small is less than medium, the medium is less than large, and large is less than extra-large?

sizes_as_factor = factor(x=c(sizes))
sizes[order(sizes_as_factor)]
1

2 Answers

By supplying the factor levels manually in the desired order:

sizes_as_factor <- factor(sizes, levels = c("small", "medium", "large", "extra-large"))
3

Another option is to make the factor first and then sample from it. It will produce a factor that retains the levels, another potentially beneficial aspect of factors.

sizes <- c("small","medium","large","extra-large")
size_fct <- factor(sizes, levels = sizes, ordered = T) 

set.seed(23)
size_samp <- sample(size_fct, 50, T)
size_samp
#>  [1] small       extra-large extra-large large       extra-large small      
#>  [7] large       large       small       medium      extra-large small      
#> [13] large       small       small       extra-large extra-large large      
#> [19] medium      medium      large       medium      small       medium     
#> [25] extra-large medium      small       medium      large       medium     
#> [31] large       large       medium      large       medium      extra-large
#> [37] small       small       large       extra-large large       large      
#> [43] extra-large small       large       medium      extra-large small      
#> [49] large       medium     
#> Levels: small < medium < large < extra-large

Created on 2021-03-29 by the reprex package (v1.0.0)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Robert Thorne

Robert Thorne

Automotive & Future Transportation Editor

Robert Thorne covers electric vehicle innovations, autonomous driving systems, global mobility trends, and automotive engineering developments.

Share this article
Twitter Facebook Pinterest