このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
categorical 配列の作成
この例では、categorical 配列を作成する方法を説明します。categorical
は、離散カテゴリの有限集合からの値をもつデータを格納するためのデータ型です。これらのカテゴリには自然な順序がある場合がありますが、必須ではありません。categorical 配列は、データを効率的に格納して操作するのに適しています。また、値のわかりやすい名前を維持することもできます。categorical 配列は table で行のグループを定義するために使用できます。
既定の設定では、categorical 配列には数学的に順序付けされていないカテゴリが含まれます。たとえば、ペットのカテゴリの離散集合 ["dog","cat","bird"]
には、意味のある数学的な順序が付けられていないので、MATLAB® はアルファベット順 ["bird","cat","dog"]
を使用します。"順序" categorical 配列には、意味のある数学的な順序が付けられているカテゴリが含まれます。たとえば、サイズのカテゴリの離散集合 ["small","medium","large"]
には数学的な順序 small < medium < large
が付けられています。
string 配列 (または文字ベクトルの cell 配列) から categorical 配列を作成する場合、先頭と末尾の空白が削除されます。たとえば、テキスト [" cat","dog"]
をカテゴリとして指定し、これらをカテゴリに変換すると、["cat","dog"]
になります。
string 配列からの categorical 配列の作成
関数 categorical
を使用して、数値配列、logical 配列、string 配列、文字ベクトルの cell 配列または既存の categorical 配列から categorical 配列を作成することができます。
ニュー イングランドの州名を含む 1 行 11 列の string 配列を作成します。
state = ["MA","ME","CT","VT","ME","NH","VT","MA","NH","CT","RI"]
state = 1x11 string
"MA" "ME" "CT" "VT" "ME" "NH" "VT" "MA" "NH" "CT" "RI"
string 配列 state
を数学的な順序が付けられていない categorical 配列に変換します。
state = categorical(state)
state = 1x11 categorical
MA ME CT VT ME NH VT MA NH CT RI
変数 state
の離散カテゴリを一覧表示します。state
で一覧表示される一意の州は 6 つだけで、これは 6 つのカテゴリがあることを意味します。カテゴリがアルファベット順に並べられています。
categories(state)
ans = 6x1 cell
{'CT'}
{'MA'}
{'ME'}
{'NH'}
{'RI'}
{'VT'}
新しい要素と欠損要素の追加
元の string 配列に要素を追加します。要素の 1 つは欠損 string で、<missing>
として表示されます。NaN
が数値配列内の欠損値を示すことができるように、<missing>
は string 配列内の欠損値を示します。
state = ["MA","ME","CT","VT","ME","NH","VT","MA","NH","CT","RI"]; state = [string(missing) state]; state(13) = "ME"
state = 1x13 string
<missing> "MA" "ME" "CT" "VT" "ME" "NH" "VT" "MA" "NH" "CT" "RI" "ME"
string 配列を categorical
配列に変換します。欠損 string は未定義のカテゴリになり、<undefined>
として表示されます。どのカテゴリにも属さない categorical 配列の要素を示します。
state = categorical(state)
state = 1x13 categorical
<undefined> MA ME CT VT ME NH VT MA NH CT RI ME
string 配列からの順序 categorical 配列の作成
8 つのオブジェクトのサイズを含む 1 行 8 列の string 配列を作成します。
AllSizes = ["medium","large","small","small","medium",... "large","medium","small"];
string 配列 AllSizes
には、"large"
、"medium"
、"small"
の 3 つの異なる値が含まれています。string 配列を使用する場合、small < medium < large
を示す便利な方法はありません。
string 配列 AllSizes
を順序 categorical 配列に変換します。valueset
を使用して、カテゴリを定義する値 small
、medium
および large
を指定します。順序 categorical 配列では、最初に指定されたカテゴリが最小になり、最後に指定されたカテゴリが最大になります。
valueset = ["small","medium","large"]; sizeOrd = categorical(AllSizes,valueset,'Ordinal',true)
sizeOrd = 1x8 categorical
medium large small small medium large medium small
categorical 配列の値の順序 sizeOrd
は変更されません。
categorical 変数 sizeOrd
の離散カテゴリを一覧表示します。
categories(sizeOrd)
ans = 3x1 cell
{'small' }
{'medium'}
{'large' }
カテゴリが、数学的な順序 small < medium < large
に対応する指定された順序で並べられます。
数値データのビン化による順序 categorical 配列の作成
0 から 50 までの範囲の 100 個の乱数からなるベクトルを作成します。
x = rand(100,1)*50;
関数 discretize
を使用して x
の値をビン化して categorical 配列を作成します。0 ~ 15 までのすべての値を最初のビンに、15 ~ 35 までのすべての値を 2 番目のビンに、35 ~ 50 までのすべての値を 3 番目のビンに入れます。それぞれのビンには、左の端点は含まれますが、右の端点は含まれません。
catnames = ["small","medium","large"]; binnedData = discretize(x,[0 15 35 50],'categorical',catnames);
binnedData
は、small < medium < large
である 3 つのカテゴリを含む 100 行 1 列の順序 categorical 配列です。
関数 summary
を使用して各カテゴリの要素の数を出力します。
summary(binnedData)
small 30 medium 35 large 35
ビン化されたデータのさまざまな種類のグラフを作成できます。たとえば、binnedData
の円グラフを作成します。
pie(binnedData)
参考
categorical
| categories
| summary
| discretize