順序 categorical 配列
カテゴリの順序
categorical
は、離散カテゴリの有限集合からの値をもつデータを格納するためのデータ型で、自然な順序が付いていることがあります。すべての categorical 配列でカテゴリの順序を指定および変更することができます。しかしながら、カテゴリに数学的な順序が付けられているものとして取り扱うことができるのは "順序" categorical 配列のみです。関数 min
や max
または関係演算 (「より大きい」や「より小さい」など) を利用する場合は、順序 categorical 配列を使用してください。
ペットのカテゴリの離散集合 ["dog" "cat" "bird"]
には意味のある数学的な順序は付けられていません。任意のカテゴリ順序を自由に使用することができ、それによって関連付けられているデータの意味が変更されることはありません。たとえば、pets = categorical(["bird" "cat" "dog" "dog" "cat"])
で作成された categorical 配列では、カテゴリはアルファベット順で ["bird" "cat" "dog"]
というように並べられます。カテゴリの順序を ["dog" "cat" "bird"]
のように指定または変更することができ、それによってデータの意味が変更されることはありません。
"順序" categorical 配列には、意味のある数学的な順序が付けられているカテゴリが含まれます。たとえば、サイズのカテゴリの離散集合 ["small" "medium" "large"]
には数学的な順序 small < medium < large
が付けられています。最初に表示されるカテゴリが最も小さく、最後に表示されるカテゴリが最も大きいものになります。順序 categorical 配列内のカテゴリの順序は順序 categorical 配列の関係比較の結果に影響します。
順序 categorical 配列の作成方法
この例では、categorical
関数に名前と値の引数 Ordinal
を指定して順序 categorical 配列を作成する方法を示します。
string 配列からの順序 categorical 配列
順序 categorical 配列を作成します。配列を順序配列にするには、名前と値の引数 Ordinal
を true
に設定します。
A = ["medium" "large";"small" "medium"; "large" "small"]; valueset = ["small" "medium" "large"]; sizes = categorical(A,valueset,Ordinal=true)
sizes = 3×2 categorical
medium large
small medium
large small
整数からの順序 categorical 配列
整数の配列から同等の categorical 配列を作成します。値 1
、2
および 3
を使用して、カテゴリ small
、medium
、large
をそれぞれ定義します。
A2 = [2 3; 1 2; 3 1]; valueset = 1:3; catnames = ["small" "medium" "large"]; sizes2 = categorical(A2,valueset,catnames,Ordinal=true)
sizes2 = 3×2 categorical
medium large
small medium
large small
sizes
と sizes2
を比較します。
isequal(sizes,sizes2)
ans = logical
1
sizes
と sizes2
は、同じ順序のカテゴリをもつ同等の categorical 配列です。
非順序 categorical 配列から順序 categorical 配列への変換
順序 categorical 配列を非順序配列に変換するには、名前と値の引数 Ordinal
を指定せずに categorical
関数を使用します。
sizes3 = categorical(sizes)
sizes3 = 3×2 categorical
medium large
small medium
large small
categorical 配列が順序配列であるかどうかを判定します。
isordinal(sizes3)
ans = logical
0
sizes3
を順序 categorical 配列に変換します。
sizes3 = categorical(sizes3,Ordinal=true); isordinal(sizes3)
ans = logical
1
これで、sizes3
は sizes
および sizes2
と同等の 3 行 2 列の順序 categorical 配列になりました。
順序 categorical 配列の操作
2 つの categorical 配列を結合または比較するには、両方の入力配列のカテゴリ集合が、順序を含め、同一でなければなりません。それだけでなく、順序 categorical 配列は常に保護されています。そのため、値を順序 categorical 配列に代入する場合、その値は既存のいずれかのカテゴリに属していなければなりません。詳細については、保護された categorical 配列の操作を参照してください。
参考
categorical
| categories
| isordinal
| isequal