Ordinal
Details
- An ordinal scale represents a set of categories, with a specific order. Examples include movie ratings, product quality and pain level.
- The categories cati can be any expression.
- In Ordinal[scale], scale can be a list of categories, an OrdinalScale specification, an Ordinal expression or an Association of category information.
- Ordinal[scale][c] is equivalent to Ordinal[scale,c].
Examples
open all close allBasic Examples (3)
Represent the ordered set a, b, c:
Ordinal[{a, b, c}]Represent the category a from within the set:
Ordinal[{a, b, c}, a]Create a list of categories from a category scale:
scale = Ordinal[{"good", "better", "best"}]scale /@ {"best", "good", "good", "better", "best"}Use categories with explicit scores and labels:
scale = Ordinal[<|
"CategoryList" -> {"NS", "S3", "S2", "S1"}, "LabelList" -> {"Not Suitable", "Marginally Suitable", "Moderately Suitable", "Highly Suitable"}, "ScoreList" -> {0, .5, .75, 1}
|>]scale /@ {"S3", "NS", "NS", "S1"}Scope (15)
An OrdinalScale expression may be used as a scale specification:
Ordinal[OrdinalScale[{"a", "b", "c"}], "b"]An Ordinal expression may be used as a scale specification:
scale = Ordinal[{"poor", "fair", "good"}]Ordinal[scale, "good"]Ordinal objects use their "Score" value for sorting and ordering:
scale = Ordinal[{"B", "C", "A"}];obj = scale /@ {"A", "B", "C"}Sort[obj]NumericalOrder@@Take[obj, 2]The "Score" value will also be used in comparisons:
obj = {Ordinal[{a, b}, a], Ordinal[{a, b}, b]}CategoricalValue[obj, "Score"]Less@@%Less@@objOrdinal objects are sorted according to their "Score" value:
list = {Ordinal[{b, x, f}, x], Ordinal[{b, x, f}, b]};Sort[list]CategoricalValue[list, "Score"]Ordinal objects are sorted according to their "Score" value:
ReverseSort[RandomChoice[Ordinal[{"None", "VeryLight", "Light", "Moderate", "High", "VeryHard", "Maximum"}], 10]]Ordering is determined by the "Score" values for OrdinalObject expressions:
OrderedQ[Echo@RandomChoice[Ordinal[{"None", "VeryLight", "Light", "Moderate", "High", "VeryHard", "Maximum"}], 5]]Ordering is determined by the "Score" values for OrdinalObject expressions:
Ordering[Echo@RandomChoice[Ordinal[{"None", "VeryLight", "Light", "Moderate", "High", "VeryHard", "Maximum"}], 5]]Ordering is determined by the "Score" values for OrdinalObject expressions:
Order[Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 4], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 6]]Ordering is determined by the "Score" values for OrdinalObject expressions:
LexicographicOrder[Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 4], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 6]]Ordinal objects are sorted according to their "Score" value:
LexicographicSort[{Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 4], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 6], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 3], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 2], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 1], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 5], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 7]}]Ordering is determined by the "Score" values for OrdinalObject expressions:
NumericalOrder[Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 4], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 6]]Ordinal objects are sorted according to their "Score" value:
NumericalSort[{Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 4], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 6], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 3], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 2], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 1], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 5], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 7]}]Information will provide detailed information about a given Ordinal expression:
Information[Ordinal[{"None", "VeryLight", "Light", "Moderate", "High", "VeryHard", "Maximum"}]]TabularColumn will automatically detect Ordinal expressions:
ord = {Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 4], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 6], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 3], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 2], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 1], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 5], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 7]};TabularColumn[ord]Normal will restore the original Ordinal expressions:
Normal@%% == ordApplications (2)
Visualize a collection of categories with CategoricalHistogram:
CategoricalHistogram[{Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 2], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 2], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 3], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 3], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 2], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 2], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 1], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 3], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 2], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 1], Ordinal[Association["CategoryList" -> {"first", "middle", "last"},
"LabelList" -> {"first", "middle", "last"}, "ScoreList" -> {1, 2, 3}], 2]}]Visualize a random variate of a given category within a CategoricalDistribution:
dist = CategoricalDistribution[Ordinal[{"Flat", "Gentle", "Moderate", "Steep", "VerySteep"}], {8, 3, 5, 2, 1}]RandomVariate[dist, 20]CategoricalHistogram[%]Properties & Relations (3)
Nominal expressions operate similarly to Ordinal ones, with the exception of sorting:
cats = {"b", "c", "a"};nom = Nominal[cats]ord = Ordinal[cats]Since there is no inherent order to Nominal categories, they follow canonical order(e.g. alphabetical):
Sort[nom /@ cats]As such, there is no minimum category:
Min[nom /@ cats]Ordinal categories are sorted by their ordering within the scale:
Sort[ord /@ cats]This also applies to comparisons as well:
Min[ord /@ cats]CategoricalValue can be used to extract the underlying expression for a category:
CategoricalValue[Ordinal[Association["CategoryList" -> {"b", "c", "a"}, "LabelList" -> {"b", "c", "a"},
"ScoreList" -> {1, 2, 3}], 1]]The same is true for an entire scale:
CategoricalValue[Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}]]]TabularColumn will automatically detect Ordinal expressions:
ord = {Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 4], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 6], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 3], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 2], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 1], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 5], Ordinal[Association["CategoryList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "LabelList" -> {"None", "VeryLight", "Light", "Moderate", "High",
"VeryHard", "Maximum"}, "ScoreList" -> {1, 2, 3, 4, 5, 6, 7}], 7]};TabularColumn[ord]The "ElementType" for columns of Ordinal objects is "Ordinal":
%["ElementType"]History
Text
Wolfram Research (2026), Ordinal, Wolfram Language function, https://reference.wolfram.com/language/ref/Ordinal.html.
CMS
Wolfram Language. 2026. "Ordinal." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Ordinal.html.
APA
Wolfram Language. (2026). Ordinal. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Ordinal.html
BibTeX
@misc{reference.wolfram_2026_ordinal, author="Wolfram Research", title="{Ordinal}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/Ordinal.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_ordinal, organization={Wolfram Research}, title={Ordinal}, year={2026}, url={https://reference.wolfram.com/language/ref/Ordinal.html}, note=[Accessed: 12-June-2026]}