Main Content

順序 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',true を指定して順序 categorical 配列を作成する方法を示します。

文字ベクトルの cell 配列からの順序 categorical 配列

順序 categorical 配列 sizes を文字ベクトルの cell 配列 A から作成します。一意の値のベクトルとして指定される valueset を使用して、sizes のカテゴリを定義します。

A = {'medium' 'large';'small' 'medium'; 'large' 'small'};
valueset = {'small', 'medium', 'large'};

sizes = categorical(A,valueset,'Ordinal',true)
sizes = 3x2 categorical
     medium      large  
     small       medium 
     large       small  

sizes は、small < medium < large である 3 つのカテゴリを含む 3 行 2 列の順序 categorical 配列です。valueset 内の値の順序は sizes のカテゴリの順序になります。

整数からの順序 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 = 3x2 categorical
     medium      large  
     small       medium 
     large       small  

sizessizes2 を比較します。

isequal(sizes,sizes2)
ans = logical
   1

sizessizes2 は、同じ順序のカテゴリをもつ同等の categorical 配列です。

非順序 categorical 配列から順序 categorical 配列への変換

非順序 categorical 配列を文字ベクトルの cell 配列 A から作成します。

sizes3 = categorical(A)
sizes3 = 3x2 categorical
     medium      large  
     small       medium 
     large       small  

categorical 配列が順序配列であるかどうかを判定します。

isordinal(sizes3)
ans = logical
   0

sizes3 は、3 つのカテゴリ {'large','medium','small'} をもつ非順序 categorical 配列です。sizes3 のカテゴリは、A からの並べ替えられた一意の値です。別のカテゴリ順序を指定するには、入力引数 valueset を使用しなければなりません。

sizes3small < medium < large という順序の順序 categorical 配列に変換します。

sizes3 = categorical(sizes3,{'small','medium','large'},'Ordinal',true);

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

順序 categorical 配列の操作

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

参考

| | |

関連する例

詳細