このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
categorical
カテゴリに割り当てられた値を含む配列
説明
categorical
は、High
、Med
、Low
などの離散カテゴリの有限集合に値を割り当てるデータ型です。これらのカテゴリには High > Med > Low
などの数学的な順序を指定することができますが、必須ではありません。categorical 配列は、非数値データを効率的に格納し操作するのに適しており、値に付けられたわかりやすい名前も維持されます。一般的に、categorical 配列は table の行のグループを指定するために使用します。
作成
構文
説明
B = categorical(
は、1 つ以上の A
,___,Name,Value
)Name,Value
のペアの引数で指定された追加オプションを使用して、categorical 配列を作成します。前述の構文のいずれかの入力引数を含めることができます。
たとえば、カテゴリが数学的な順序になることを示すには、'Ordinal',true
を指定します。
入力引数
A
— 入力配列
数値配列 | logical 配列 | categorical 配列 | datetime 配列 | duration 配列 | string 配列 | 文字ベクトルの cell 配列
入力配列。数値配列、logical 配列、categorical 配列、datetime 配列、duration 配列、string 配列、または文字ベクトルの cell 配列として指定します。
categorical
は、string または文字ベクトルである入力値から先頭のスペースと末尾のスペースを削除します。
A
に欠損値が含まれる場合、B
の対応する要素は定義されず、<undefined>
として表示されます。関数 categorical
は、次の値を未定義の categorical 値に変換します。
数値配列および duration 配列内の
NaN
string 配列内の欠損 string (
<missing>
) または空の string (""
)文字ベクトルの cell 配列内にある空の文字ベクトル (
''
)datetime 配列内の
NaT
categorical 配列内の未定義値 (
<undefined>
)
B
には未定義値のカテゴリが含まれません。欠損値または未定義値の明示的なカテゴリを作成するには、catnames
に目的のカテゴリ名を含め、さらに欠損値を対応する値として valueset
に含めなければなりません。
また、A
は次のクラス メソッドをもつオブジェクトの配列にすることもできます。
unique
eq
valueset
— カテゴリ
unique(A)
(既定値) | 一意の値のベクトル
カテゴリ。一意の値のベクトルとして指定します。valueset
のデータ型と A
のデータ型は同じでなければなりません。ただし、A
が string 配列の場合を除きます。その場合、valueset
は string 配列または文字ベクトルの cell 配列のいずれかにすることができます。
categorical
は、string または文字ベクトルである valueset
の要素から先頭のスペースと末尾のスペースを削除します。
catnames
— カテゴリ名
文字ベクトルの cell 配列 | string 配列
カテゴリ名。文字ベクトルの cell 配列、または string 配列として指定します。入力引数 catnames
を指定しない場合、categorical
は valueset
内の値をカテゴリ名として使用します。
A
の複数の異なる値を B
の 1 つのカテゴリにマージするには、それらの値に対応する重複した名前を含めます。
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: 'Ordinal',true
は、カテゴリが数学的な順序になることを指定します。
Ordinal
— 順序変数インジケーター
false
(既定値) | true
順序変数インジケーター。'Ordinal'
と、false
(0
) または true
(1
) のいずれかで構成されるコンマ区切りのペアとして指定します。
|
|
|
|
詳細については、順序 categorical 配列を参照してください。
Protected
— 保護されたカテゴリ インジケーター
false
| true
保護されたカテゴリ インジケーター。'Protected'
と、false
(0
) または true
(1
) のいずれかで構成されるコンマ区切りのペアとして指定します。順序 categorical 配列のカテゴリは常に保護されます。'Ordinal',true
を指定したときの既定値は true
です。それ以外の場合は、値は false
です。
| 新しい値を |
| 新しい値を |
例
配列の変換とカテゴリ別のデータの選択
気象計のラベルをもつ categorical 配列を作成します。それを温度測定値の table に追加します。次に、そのカテゴリを使用して、気象計別に温度測定値を選択します。
まず、温度測定値、日付、および気象計のラベルを含む配列を作成します。
Temps = [58; 72; 56; 90; 76]; Dates = {'2017-04-17';'2017-04-18';'2017-04-30';'2017-05-01';'2017-04-27'}; Stations = {'S1';'S2';'S1';'S3';'S2'};
Stations
を categorical 配列に変換します。
Stations = categorical(Stations)
Stations = 5x1 categorical
S1
S2
S1
S3
S2
そのカテゴリを表示します。3 つの気象計のラベルがカテゴリです。
categories(Stations)
ans = 3x1 cell
{'S1'}
{'S2'}
{'S3'}
温度、日付、および気象計のラベルを含む table を作成します。
T = table(Temps,Dates,Stations)
T=5×3 table
Temps Dates Stations
_____ ______________ ________
58 {'2017-04-17'} S1
72 {'2017-04-18'} S2
56 {'2017-04-30'} S1
90 {'2017-05-01'} S3
76 {'2017-04-27'} S2
気象計 S2
から取得した測定値を表示します。==
演算子を使用して S2
と等価の Station
値を見つけることができます。次に、論理インデックス付けを使用して、気象計 S2
からのデータを含む table 行を選択します。
TF = (T.Stations == 'S2');
T(TF,:)
ans=2×3 table
Temps Dates Stations
_____ ______________ ________
72 {'2017-04-18'} S2
76 {'2017-04-27'} S2
入力配列に存在しないカテゴリの指定
文字ベクトルの cell 配列 A
を categorical 配列に変換します。A
に存在しない値を含むカテゴリのリストを指定します。
文字ベクトルの cell 配列を作成します。
A = {'republican' 'democrat'; 'democrat' 'democrat'; 'democrat' 'republican'};
A
を categorical 配列に変換します。independent
のカテゴリを追加します。
valueset = {'democrat' 'republican' 'independent'}; B = categorical(A,valueset)
B = 3x2 categorical
republican democrat
democrat democrat
democrat republican
B
のカテゴリを表示します。
categories(B)
ans = 3x1 cell
{'democrat' }
{'republican' }
{'independent'}
整数に対応するカテゴリ名の指定
数値配列を作成します。
A = [1 3 2; 2 1 3; 3 1 2]
A = 3×3
1 3 2
2 1 3
3 1 2
A
を categorical 配列 B
に変換して、カテゴリ名を指定します。
B = categorical(A,[1 2 3],{'red' 'green' 'blue'})
B = 3x3 categorical
red blue green
green red blue
blue red green
B
のカテゴリを表示します。
categories(B)
ans = 3x1 cell
{'red' }
{'green'}
{'blue' }
B
は順序 categorical 配列でありません。したがって、B
内の値の比較には、等号演算子 ==
および ~=
のみを使用できます。
カテゴリ 'red'
に属する要素を検索します。論理インデックス付けを使用してこれらの要素にアクセスします。
TF = (B == 'red');
B(TF)
ans = 3x1 categorical
red
red
red
順序 categorical 配列の作成
5 行 2 列の数値配列を作成します。
A = [3 2;3 3;3 2;2 1;3 2]
A = 5×2
3 2
3 3
3 2
2 1
3 2
A
を順序 categorical 配列に変換します。ここで、1
、2
、3
は、それぞれカテゴリ child
、adult
、senior
を表します。
valueset = [1:3]; catnames = {'child' 'adult' 'senior'}; B = categorical(A,valueset,catnames,'Ordinal',true)
B = 5x2 categorical
senior adult
senior senior
senior adult
adult child
senior adult
B
は順序配列であるため、B
のカテゴリは、数学的な順序 child < adult < senior
になります。
配列の事前割り当てとカテゴリの初期化
NaN
の配列を作成して categorical 配列に変換することにより、任意のサイズの categorical 配列を事前割り当てできます。配列を事前割り当てした後、カテゴリ名を指定してカテゴリを配列に追加することにより、カテゴリを初期化できます。
最初に、NaN
の配列を作成します。任意のサイズの配列を作成できます。たとえば、NaN
の 2 行 4 列の配列を作成します。
A = NaN(2,4)
A = 2×4
NaN NaN NaN NaN
NaN NaN NaN NaN
その後、NaN
の配列を変換して、categorical 配列を事前割り当てします。関数 categorical
は、NaN
を未定義の categorical 値に変換します。NaN
が "not a number" (非数) を表すのと同様に、<undefined>
はカテゴリに属さない categorical 値を表します。
A = categorical(A)
A = 2x4 categorical
<undefined> <undefined> <undefined> <undefined>
<undefined> <undefined> <undefined> <undefined>
実際、この時点では A
にはカテゴリがありません。
categories(A)
ans = 0x0 empty cell array
A
のカテゴリを初期化するには、関数 addcats
を使用して、カテゴリ名を指定し A
に追加します。たとえば、small
、medium
、および large
を、A
の 3 つのカテゴリとして追加します。
A = addcats(A,["small","medium","large"])
A = 2x4 categorical
<undefined> <undefined> <undefined> <undefined>
<undefined> <undefined> <undefined> <undefined>
A
の要素は未定義値ですが、カテゴリは addcats
により初期化されています。
categories(A)
ans = 3x1 cell
{'small' }
{'medium'}
{'large' }
A
にカテゴリが存在するようになったため、定義済みの categorical 値を A
の要素として割り当てることができます。
A(1) = "medium"; A(8) = "small"; A(3:5) = "large"
A = 2x4 categorical
medium large large <undefined>
<undefined> large <undefined> small
string 配列の変換
R2017a 以降、二重引用符を使用して string 配列を作成できるようになりました。また、string 配列は欠損値を含むこともできます。これは、引用符なしで <missing>
として表示されます。
str = ["plane","jet","plane","helicopter",missing,"jet"]
str = 1x6 string
"plane" "jet" "plane" "helicopter" <missing> "jet"
string 配列 str
を categorical 配列に変換します。関数 categorical
は欠損 string を未定義の categorical 値に変換します。これは、<undefined>
として表示されます。
C = categorical(str)
C = 1x6 categorical
plane jet plane helicopter <undefined> jet
数値データをカテゴリにピン化
100 個の乱数を 3 つのカテゴリにビニングするには、関数 discretize
(categorical
の代わりに) を使用します。
x = rand(100,1); y = discretize(x,[0 .25 .75 1],'categorical',{'small','medium','large'}); summary(y)
small 22 medium 46 large 32
ヒント
categorical 配列を受け入れる関数、または返す関数の一覧については、categorical 配列を参照してください。
入力配列に、相互に近すぎる数値、datetime 値または duration 値がある場合、関数
categorical
はこれらの値を切り捨てて重複値にします。たとえば、categorical([1 1.00001])
は入力配列の 2 番目の要素を切り捨てます。数値データからカテゴリを作成するには、関数discretize
を使用します。
代替方法
関数 discretize
を使用して、数値データをカテゴリ別にグループ化することもできます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を制限付きでサポートしています。
構文 B = categorical(A)
では、カテゴリの順序は定義されません。順序を強制的に適用するには、valueset
と catnames
を使用します。
詳細については、メモリに収まらないデータの tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
R2019a 以降では、コード生成用の MATLAB® コードで categorical 配列を使用できます。詳細については、categorical 配列のコード生成 (MATLAB Coder)とコード生成における categorical 配列の制限事項 (MATLAB Coder)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
入力を 1 つとる構文
B = categorical(A)
では、カテゴリの順序が定義されません。順序を強制的に適用するには、valueset
とcatnames
を使用します。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2013b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)