メインコンテンツ

順序 categorical 配列

カテゴリの順序

categorical は、離散カテゴリの有限集合からの値をもつデータを格納するためのデータ型で、自然な順序が付いていることがあります。すべての categorical 配列でカテゴリの順序を指定および変更することができます。しかしながら、カテゴリに数学的な順序が付けられているものとして取り扱うことができるのは "順序" categorical 配列のみです。関数 minmax または関係演算 (「より大きい」や「より小さい」など) を利用する場合は、順序 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 配列を作成します。配列を順序配列にするには、名前と値の引数 Ordinaltrue に設定します。

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 配列を作成します。値 12 および 3 を使用して、カテゴリ smallmediumlarge をそれぞれ定義します。

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  

sizessizes2 を比較します。

isequal(sizes,sizes2)
ans = logical
   1

sizessizes2 は、同じ順序のカテゴリをもつ同等の 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

これで、sizes3sizes および sizes2 と同等の 3 行 2 列の順序 categorical 配列になりました。

順序 categorical 配列の操作

2 つの categorical 配列を結合または比較するには、両方の入力配列のカテゴリ集合が、順序を含め、同一でなければなりません。それだけでなく、順序 categorical 配列は常に保護されています。そのため、値を順序 categorical 配列に代入する場合、その値は既存のいずれかのカテゴリに属していなければなりません。詳細については、保護された categorical 配列の操作を参照してください。

参考

| | |

トピック