ノミナル配列と順序配列を使用したインデックス付けと検索
メモ
nominal
配列データ型および ordinal
配列データ型は推奨されません。順序付きおよび順序付けのない離散非数値データを表すには、代わりにcategorical 配列データ型を使用します。
カテゴリ別のインデックス付け
多くの場合、データのインデックス付けおよび検索はカテゴリまたはグループ別に行うと便利です。カテゴリを文字ベクトルの cell 配列または char
配列にラベルとして格納すると、カテゴリのインデックス付けと検索が難しくなる可能性があります。ノミナル配列または順序配列を使用すると、以下を簡単に行うことができます。
特定のカテゴリ要素へのインデックス付け。ノミナル配列と順序配列のどちらの場合でも、論理演算子
==
および~=
を使用すると、特定のカテゴリ内に存在する観測値、または特定のカテゴリ以外のカテゴリの観測値にインデックス付けを実行できます。順序がエンコードされているの場合、不等号>
、>=
、<
、<=
を使用すると、特定のカテゴリより上位または下位のカテゴリの観測値を検索することができます。カテゴリのメンバーの検索。論理演算子
==
の他にismember
を使用すると、特定のグループの観測値を検索することができます。定義済みカテゴリに該当しない要素の検索。ノミナル配列と順序配列では、定義済みカテゴリに該当しない要素を
<undefined>
で表します。カテゴリがない観測値を検索するには、isundefined
を使用します。特定のカテゴリ内に含まれる観測値の削除。論理演算子を使用すると、特定のカテゴリの観測値を抽出または除外することができます。カテゴリからすべての観測を削除しても、カテゴリ レベルは
droplevels
で削除するまで定義されている状態のままとなります。
一般的なインデックス付けと検索の方法
この例では、一般的なインデックス付けと検索の方法をいくつか紹介します。
標本データを読み込みます。
load carsmall;
char
配列 Origin
をノミナル配列に変換します。この変数には標本の各自動車の生産国が格納されています。
Origin = nominal(Origin);
カテゴリ内の観測値を検索します。標本の中にカナダ製の自動車があるかどうか調べます。
any(Origin=='Canada')
ans = logical
0
標本の中にカナダ製の自動車はありません。
Origin
のレベルとなっている国のリストを作成します。
getlevels(Origin)
ans = 1x6 nominal
France Germany Italy Japan Sweden USA
特定のカテゴリの要素にインデックス付けします。米国製の自動車について加速度の測定値のヒストグラムをプロットします。
figure(); histogram(Acceleration(Origin=='USA')) title('Acceleration of Cars Made in the USA')
特定のカテゴリ内に含まれる観測値の削除。Origin
からスウェーデン製の自動車をすべて削除します。
Origin = Origin(Origin~='Sweden'); any(ismember(Origin,'Sweden'))
ans = logical
0
Origin
からスウェーデン製の自動車が削除されましたが、Sweden
はまだ Origin
のレベルとして残っています。
getlevels(Origin)
ans = 1x6 nominal
France Germany Italy Japan Sweden USA
Sweden
を Origin
のレベルから削除します。
Origin = droplevels(Origin,'Sweden');
getlevels(Origin)
ans = 1x5 nominal
France Germany Italy Japan USA
定義済みカテゴリにない観測の有無を確認します。フランス製の自動車のインデックスを取得します。
ix = find(Origin=='France')
ix = 4×1
11
27
39
61
フランス製の車は 4 台あります。France
を Origin
のレベルから削除します。
Origin = droplevels(Origin,'France');
削除対象のカテゴリ レベルに要素が存在することを示す警告が返されます。これらの観測は定義済みカテゴリにはないため、undefined
と表されています。
Origin(ix)
ans = 4x1 nominal
<undefined>
<undefined>
<undefined>
<undefined>
isundefined
を使用すると、定義済みカテゴリにない観測を検索できます。
find(isundefined(Origin))
ans = 4×1
11
27
39
61
これらのインデックスは、カテゴリ France
が Origin
から削除される前にこのカテゴリにあった観測に対応しています。
参考
nominal
| ordinal
| droplevels