Making an Ordered Factor

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
Author

Robert Thorne

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