このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
順序 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',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 配列を作成します。値 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 = 3x2 categorical
medium large
small medium
large small
sizes
と sizes2
を比較します。
isequal(sizes,sizes2)
ans = logical
1
sizes
と sizes2
は、同じ順序のカテゴリをもつ同等の 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
を使用しなければなりません。
sizes3
を small < medium < large
という順序の順序 categorical 配列に変換します。
sizes3 = categorical(sizes3,{'small','medium','large'},'Ordinal',true);
これで、sizes3
は sizes
および sizes2
と同等の 3 行 2 列の順序 categorical 配列になりました。
順序 categorical 配列の操作
2 つの categorical 配列を結合または比較するには、両方の入力配列のカテゴリ集合が、順序を含め、同一でなければなりません。それだけでなく、順序 categorical 配列は常に保護されています。そのため、値を順序 categorical 配列に代入する場合、その値は既存のいずれかのカテゴリに属していなければなりません。詳細は、保護された categorical 配列の操作を参照してください。
参考
categorical
| categories
| isordinal
| isequal