findgroups
グループを見つけてグループ番号を返す
構文
説明
データをグループに分割し、グループに関数を適用するには、関数 findgroups
と関数 splitapply
を一緒に使用します。データのグループに対する計算の詳細については、データ グループに対する計算を参照してください。
は、グループ化変数 G
= findgroups(A
)A
から作成されたグループ番号のベクトル G
を返します。出力引数 G
には 1 ~ N
の整数値が含まれ、A
の N
個の一意の値に対応する N
個の異なるグループがあることを示します。たとえば、A
が ["b","a","a","b"]
である場合、findgroups
は G
を [2 1 1 2]
として返します。
G
を使用して他の変数のデータ グループを分割するには、それを入力引数として関数 splitapply
に渡します。
関数 findgroups
は、空の文字ベクトルと、A
内にある NaN
値、NaT
値および未定義の categorical 値を欠損値として扱い、対応する G
の要素として NaN
を返します。
例
グループ番号を使用したデータの分割
グループ番号を使用して、患者の体重の測定値を喫煙者と非喫煙者の体重グループに分割します。次に、各グループの患者の平均体重を計算します。
サンプル ファイル patients.mat
から患者データを読み込みます。
load patients whos Smoker Weight
Name Size Bytes Class Attributes Smoker 100x1 100 logical Weight 100x1 800 double
findgroups
でグループを指定します。G
の各要素は、患者がどのグループに属するかを指定するグループ番号です。グループ 1
には非喫煙者が含まれ、グループ 2
には喫煙者が含まれます。
G = findgroups(Smoker)
G = 100×1
2
1
1
1
1
1
2
1
1
1
⋮
患者の体重を表示します。
Weight
Weight = 100×1
176
163
131
133
119
142
142
180
183
132
⋮
G
を使用して、配列 Weight
を 2 つの体重グループに分割します。関数 mean
を適用します。非喫煙者の平均体重は、喫煙者の平均体重より少し少なくなっています。
meanWeights = splitapply(@mean,Weight,G)
meanWeights = 2×1
149.9091
161.9412
2 つのグループ化変数を使用したデータ分割
患者のグループの平均体重を計算します。このケースでは、喫煙者または非喫煙者というステータスと、受診した病院によって患者をグループ分けします。データ セットには 3 つの病院があるため、患者グループは 6 つになります。
サンプル ファイル patients.mat
から患者の病院の場所、喫煙状況、体重を読み込みます。
load patients whos Location Smoker Weight
Name Size Bytes Class Attributes Location 100x1 14208 cell Smoker 100x1 100 logical Weight 100x1 800 double
Location
配列と Smoker
配列を表示します。
Location
Location = 100x1 cell
{'County General Hospital' }
{'VA Hospital' }
{'St. Mary's Medical Center'}
{'VA Hospital' }
{'County General Hospital' }
{'St. Mary's Medical Center'}
{'VA Hospital' }
{'VA Hospital' }
{'St. Mary's Medical Center'}
{'County General Hospital' }
{'County General Hospital' }
{'St. Mary's Medical Center'}
{'VA Hospital' }
{'VA Hospital' }
{'St. Mary's Medical Center'}
{'VA Hospital' }
{'St. Mary's Medical Center'}
{'VA Hospital' }
{'County General Hospital' }
{'County General Hospital' }
{'VA Hospital' }
{'VA Hospital' }
{'VA Hospital' }
{'County General Hospital' }
{'County General Hospital' }
{'VA Hospital' }
{'VA Hospital' }
{'County General Hospital' }
{'County General Hospital' }
{'County General Hospital' }
⋮
Smoker
Smoker = 100x1 logical array
1
0
0
0
0
0
1
0
0
0
⋮
場所と喫煙状況を使用して、グループを指定します。G
には 1 ~ 6 の整数が含まれます。これは、Smoker
と Location
の値の可能な組み合わせが 6 通りあるためです。
G = findgroups(Location,Smoker)
G = 100×1
2
5
3
5
1
3
6
5
3
1
⋮
各グループの平均体重を計算します。喫煙状況による変化よりも、場所による変化の方が少なくなっています。
meanWeights = splitapply(@mean,Weight,G)
meanWeights = 6×1
150.1739
159.8125
146.8947
158.4000
152.0417
165.9231
2 番目の出力からのグループ ID の使用
患者のグループについて平均体重を計算し、結果をテーブルに表示します。平均体重をグループ ID と関連付けるには、findgroups
の 2 番目の出力引数を使用します。
サンプル ファイル patients.mat
から患者の体重と喫煙状況を読み込みます。
load patients whos Smoker Weight
Name Size Bytes Class Attributes Smoker 100x1 100 logical Weight 100x1 800 double
findgroups
を使用してグループを指定します。出力引数 ID
の値は、findgroups
がグループ化変数から検出するグループのラベルです。
[G,ID] = findgroups(Smoker)
G = 100×1
2
1
1
1
1
1
2
1
1
1
⋮
ID = 2x1 logical array
0
1
平均体重を計算します。平均体重を含むテーブルを作成します。
meanWeight = splitapply(@mean,Weight,G); T = table(ID,meanWeight,'VariableNames',["Smokers","Mean Weights"])
T=2×2 table
Smokers Mean Weights
_______ ____________
false 149.91
true 161.94
2 つのグループ化変数からのグループ ID の使用
患者のグループについて平均体重を計算し、結果をテーブルに表示します。このケースでは、喫煙者または非喫煙者というステータスと、受診した病院によって患者をグループ分けします。
サンプル ファイル patients.mat
から患者の病院の場所、喫煙状況、体重を読み込みます。
load patients whos Location Smoker Weight
Name Size Bytes Class Attributes Location 100x1 14208 cell Smoker 100x1 100 logical Weight 100x1 800 double
Location
を string 配列に変換します。次に、場所と喫煙状況を使用してグループを指定します。入力として 2 つのグループ化変数を指定するため、追加出力として 2 つのグループ ID を指定できます。場所と喫煙状況の可能な組み合わせは 6 通りあります。ID1
と ID2
を合わせると、6 つのグループの ID になります。
Location = string(Location); [G,ID1,ID2] = findgroups(Location,Smoker)
G = 100×1
2
5
3
5
1
3
6
5
3
1
⋮
ID1 = 6x1 string
"County General Hospital"
"County General Hospital"
"St. Mary's Medical Center"
"St. Mary's Medical Center"
"VA Hospital"
"VA Hospital"
ID2 = 6x1 logical array
0
1
0
1
0
1
各グループの平均体重を計算します。
meanWeights = splitapply(@mean,Weight,G)
meanWeights = 6×1
150.1739
159.8125
146.8947
158.4000
152.0417
165.9231
患者の各グループの平均体重を含むテーブルを作成します。
T = table(ID1,ID2,meanWeights,'VariableNames',["Hospital","Smoker","Mean Weight"])
T=6×3 table
Hospital Smoker Mean Weight
___________________________ ______ ___________
"County General Hospital" false 150.17
"County General Hospital" true 159.81
"St. Mary's Medical Center" false 146.89
"St. Mary's Medical Center" true 158.4
"VA Hospital" false 152.04
"VA Hospital" true 165.92
table 変数別グループ
テーブル内のグループ化変数を使用して、患者の平均体重を計算します。
患者 100 人の病院の場所と喫煙状況をテーブルに読み込みます。
load patients
T = table(Location,Smoker)
T=100×2 table
Location Smoker
_____________________________ ______
{'County General Hospital' } true
{'VA Hospital' } false
{'St. Mary's Medical Center'} false
{'VA Hospital' } false
{'County General Hospital' } false
{'St. Mary's Medical Center'} false
{'VA Hospital' } true
{'VA Hospital' } false
{'St. Mary's Medical Center'} false
{'County General Hospital' } false
{'County General Hospital' } false
{'St. Mary's Medical Center'} false
{'VA Hospital' } false
{'VA Hospital' } true
{'St. Mary's Medical Center'} false
{'VA Hospital' } true
⋮
T
の変数 Smoker
および Location
を使用して、患者のグループを指定します。
G = findgroups(T)
G = 100×1
2
5
3
5
1
3
6
5
3
1
⋮
データ配列 Weight
から平均体重を計算します。
meanWeights = splitapply(@mean,Weight,G)
meanWeights = 6×1
150.1739
159.8125
146.8947
158.4000
152.0417
165.9231
テーブルからグループ化して出力テーブルを作成
病院の場所と喫煙者または非喫煙者としての状況でグループ化された患者について、平均体重のテーブルを作成します。
患者の病院の場所と喫煙状況をテーブルに読み込みます。Location
を string 配列に変換します。
load patients
Location = string(Location);
T = table(Location,Smoker)
T=100×2 table
Location Smoker
___________________________ ______
"County General Hospital" true
"VA Hospital" false
"St. Mary's Medical Center" false
"VA Hospital" false
"County General Hospital" false
"St. Mary's Medical Center" false
"VA Hospital" true
"VA Hospital" false
"St. Mary's Medical Center" false
"County General Hospital" false
"County General Hospital" false
"St. Mary's Medical Center" false
"VA Hospital" false
"VA Hospital" true
"St. Mary's Medical Center" false
"VA Hospital" true
⋮
T
の変数 Location
および Smoker
を使用して、患者のグループを指定します。出力 table TID
はグループを識別します。
[G,TID] = findgroups(T); TID
TID=6×2 table
Location Smoker
___________________________ ______
"County General Hospital" false
"County General Hospital" true
"St. Mary's Medical Center" false
"St. Mary's Medical Center" true
"VA Hospital" false
"VA Hospital" true
データ配列 Weight
から平均体重を計算します。平均体重を TID
に追加します。
TID.meanWeight = splitapply(@mean,Weight,G)
TID=6×3 table
Location Smoker meanWeight
___________________________ ______ __________
"County General Hospital" false 150.17
"County General Hospital" true 159.81
"St. Mary's Medical Center" false 146.89
"St. Mary's Medical Center" true 158.4
"VA Hospital" false 152.04
"VA Hospital" true 165.92
入力引数
A
— グループ化変数
ベクトル
グループ化変数。ベクトルとして指定します。A
の一意の値がグループを識別します。グループ化変数は、表にリストされているデータ型を使用して指定できます。
グループを指定する値 | グループ化変数のデータ型 |
---|---|
数字 | 数値または logical ベクトル |
テキスト | string 配列または文字ベクトルの cell 配列 |
日付と時刻 |
|
カテゴリ |
|
ビン | ビン化された値のベクトル。数値、 |
T
— グループ化変数
table
グループ化変数。テーブルとして指定します。findgroups
は各 table 変数を個別のグループ化変数として扱います。
テーブル変数は、数値、logical、string、categorical
、datetime
、duration
、calendarDuration
ベクトル、または文字ベクトルの cell 配列のいずれかになります。
出力引数
G
— グループ番号
正の整数のベクトル
グループ番号。正の整数のベクトルとして返されます。グループ化変数内で N
個のグループが識別された場合、1 ~ N
の各整数が 1 つのグループを指定します。グループ化変数に欠損 string、空の文字ベクトル、NaN
値、NaT
値、または未定義の categorical
値が含まれる場合、G
には NaN
が含まれます。
グループ化変数がベクトルである場合、
G
およびグループ化変数はすべて同じサイズになります。グループ化変数がテーブル内にある場合、
G
の長さはテーブルの行数に等しくなります。
ID
— 各グループを識別する値
並べ替えられた一意の値のベクトル
各グループを識別する値。入力引数 A
から並べ替えた一意の値のベクトルとして返されます。ID
のデータ型は、A
のデータ型と同じです。
TID
— 各グループを識別する一意の値のテーブル
table
各グループを識別する一意の値のテーブル。テーブルとして返されます。TID
の変数には、T
の対応する変数から取得した一意の値を並べ替えた値が格納されます。ただし、TID
および T
の行数は必ずしも同じとは限りません。
詳細
データ グループに対する計算
データ解析では、データ グループに対して計算を実行するのが一般的です。このような計算では、1 つ以上のデータ変数をデータ グループに分割し、各グループに対して計算を実行し、結果を 1 つ以上の出力変数に結合します。1 つ以上の "グループ化変数" を使用してグループを指定できます。グループ化変数の一意の値は、データ変数の対応する値が属するグループを定義します。
たとえばこの図は、6 行 1 列の数値ベクトルを 2 つのデータ グループに分け、各グループの平均を計算し、その出力を 2 行 1 列の数値ベクトルにまとめる単純なグループ化計算を示しています。6 行 1 列のグループ化変数には、AB
と XYZ
の 2 つの一意の値があります。
数値、テキスト、日時、カテゴリ、またはビンをもつグループ化変数を指定できます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を制限付きでサポートしています。
tall table はサポートされていません。
G
のグループ番号の順序は、インメモリfindgroups
の計算の場合とは異なる場合があります。
詳細については、メモリに収まらないデータの tall 配列を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2015b で導入
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)