Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

findgroups

グループを見つけてグループ番号を返す

説明

G = findgroups(A) は、グループ化変数 A から作成されたグループ番号のベクトル G を返します。出力引数 G には 1 ~ N の整数値が含まれ、AN 個の一意の値に対応する N 個の異なるグループがあることを示します。たとえば、A{'b','a','a','b'} である場合、findgroupsG[2 1 1 2] として返します。G を使用して、他の変数のデータ グループを分割できます。分割-適用-結合のワークフローsplitapply の入力引数として、G を使用します。

findgroups は、空の文字ベクトルと、A 内にある NaN 値、NaT 値および未定義のカテゴリカル値を欠損値として扱い、対応する G の要素として NaN を返します。

G = findgroups(A1,...,AN)A1,...,AN からグループ番号を作成します。関数 findgroups は、A1,...,AN の値の一意の組み合わせとしてグループを定義します。たとえば、A1{'a','a','b','b'}A2[0 1 0 0] である場合、findgroups(A1,A2)G[1 2 3 3] として返します。これは 'b' 0 の組み合わせが 2 つあるからです。

また、[G,ID] = findgroups(A) は、各グループの一意の値を ID に返します。たとえば、A{'b','a','a','b'} である場合、findgroupsG[2 1 1 2] として、また ID{'a','b'} として返します。引数 AID は同じデータ型ですが、必ずしも同じサイズとは限りません。

また、[G,ID1,...,IDN] = findgroups(A1,...,AN) は、各グループの一意の値を ID1,...,IDN にわたって返します。ID1,...,IDN の値がグループを定義します。たとえば、A1{'a','a','b','b'}A2[0 1 0 0] である場合、findgroups(A1,A2)G[1 2 3 3] として、また ID1 および ID2 をそれぞれ {'a','a','b'} および [0 1 0] として返します。

G = findgroups(T) は、table T の変数から作成されたグループ番号のベクトル G を返します。関数 findgroups は、T のすべての変数をグループ化変数として扱います。

また、[G,TID] = findgroups(T) は各グループの一意の値を含む table TID も返します。TID には、T の変数に対する値の一意の組み合わせが含まれます。T および TID の変数は同じ名前ですが、テーブルの行数が必ずしも同じとは限りません。

すべて折りたたむ

グループ番号を使用して、患者の身長の測定値を性別のグループに分割します。各グループの平均身長を計算します。

患者の身長と性別をデータ ファイル patients.mat から読み込みます。

load patients
whos Gender Height
  Name          Size            Bytes  Class     Attributes

  Gender      100x1             11412  cell                
  Height      100x1               800  double              

findgroups で性別のグループを指定します。

G = findgroups(Gender);

Gender および G の最初の 5 つの要素を比較します。Gender'Female' が含まれる位置に、G では 1 があります。Gender'Male' が含まれる位置に、G では 2 があります。

Gender(1:5)
ans = 5x1 cell
    {'Male'  }
    {'Male'  }
    {'Female'}
    {'Female'}
    {'Female'}

G(1:5)
ans = 5×1

     2
     2
     1
     1
     1

G を使用して、変数 Height を 2 つの身長グループに分割します。関数 mean を適用します。グループにはそれぞれ、女性患者と男性患者の平均身長が含まれます。

splitapply(@mean,Height,G)
ans = 2×1

   65.1509
   69.2340

性別および喫煙者かどうかのステータスによりグループ化した測定値から、患者グループの平均血圧を計算します。

患者の血圧測定値、性別、および喫煙のデータをデータ ファイル patients.mat から読み込みます。

load patients
whos Systolic Diastolic Gender Smoker
  Name             Size            Bytes  Class      Attributes

  Diastolic      100x1               800  double               
  Gender         100x1             11412  cell                 
  Smoker         100x1               100  logical              
  Systolic       100x1               800  double               

患者の性別および喫煙情報を使用して、グループを指定します。G には 1 ~ 4 の整数が含まれます。これは、Smoker および Gender の値の可能な組み合わせが 4 通りあるためです。

G = findgroups(Smoker,Gender);
G(1:10)
ans = 10×1

     4
     2
     1
     1
     1
     1
     3
     2
     2
     1

各グループの平均血圧を計算します。

meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);
mBP = [meanSystolic,meanDiastolic]
mBP = 4×2

  119.4250   79.0500
  119.3462   79.8846
  129.0000   89.2308
  129.5714   90.3333

患者のグループについて身長の中央値を計算し、結果をテーブルに表示します。患者のグループを定義するには、findgroups の追加の出力引数を使用します。

患者の身長と性別をデータ ファイル patients.mat から読み込みます。

load patients
whos Gender Height
  Name          Size            Bytes  Class     Attributes

  Gender      100x1             11412  cell                
  Height      100x1               800  double              

findgroups で性別のグループを指定します。出力引数 gender の値は、findgroups がグループ化変数から検出するグループを定義します。

[G,gender] = findgroups(Gender);

身長の中央値を計算します。身長の中央値を含むテーブルを作成します。

medianHeight = splitapply(@median,Height,G);
T = table(gender,medianHeight)
T=2×2 table
      gender      medianHeight
    __________    ____________

    {'Female'}         65     
    {'Male'  }         69     

患者のグループについて血圧の平均値を計算し、結果をテーブルに表示します。患者のグループを定義するには、findgroups の追加の出力引数を使用します。

患者 100 人の血圧測定値、性別、および喫煙のデータをデータ ファイル patients.mat から読み込みます。

load patients
whos Systolic Diastolic Gender Smoker
  Name             Size            Bytes  Class      Attributes

  Diastolic      100x1               800  double               
  Gender         100x1             11412  cell                 
  Smoker         100x1               100  logical              
  Systolic       100x1               800  double               

患者の性別および喫煙情報を使用して、グループを指定します。各グループの平均血圧を計算します。出力引数 gender および smoker の値は、findgroups がグループ化変数から検出するグループを定義します。

[G,gender,smoker] = findgroups(Gender,Smoker);
meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);

各患者グループの平均血圧をもつテーブルを作成します。

T = table(gender,smoker,meanSystolic,meanDiastolic)
T=4×4 table
      gender      smoker    meanSystolic    meanDiastolic
    __________    ______    ____________    _____________

    {'Female'}    false        119.42           79.05    
    {'Female'}    true            129          89.231    
    {'Male'  }    false        119.35          79.885    
    {'Male'  }    true         129.57          90.333    

テーブル内のグループ化変数を使用して、患者の平均血圧を計算します。

患者 100 人の性別および喫煙データをテーブルに読み込みます。

load patients
T = table(Gender,Smoker);
T(1:5,:)
ans=5×2 table
      Gender      Smoker
    __________    ______

    {'Male'  }    true  
    {'Male'  }    false 
    {'Female'}    false 
    {'Female'}    false 
    {'Female'}    false 

T の変数 Gender および Smoker を使用して、患者のグループを指定します。

G = findgroups(T);

データ変数 Systolic および Diastolic から平均血圧を計算します。

meanSystolic = splitapply(@mean,Systolic,G);
meanDiastolic = splitapply(@mean,Diastolic,G);
mBP = [meanSystolic,meanDiastolic]
mBP = 4×2

  119.4250   79.0500
  129.0000   89.2308
  119.3462   79.8846
  129.5714   90.3333

性別および喫煙者/非喫煙者のステータスでグループ化した患者について、平均血圧のテーブルを作成します。

患者の性別および喫煙データをテーブルに読み込みます。

load patients
T = table(Gender,Smoker);

T の変数 Gender および Smoker を使用して、患者のグループを指定します。出力 table TID はグループを識別します。

[G,TID] = findgroups(T);
TID
TID=4×2 table
      Gender      Smoker
    __________    ______

    {'Female'}    false 
    {'Female'}    true  
    {'Male'  }    false 
    {'Male'  }    true  

データ変数 Systolic および Diastolic から平均血圧を計算します。平均血圧を TID に追加します。

TID.meanSystolic = splitapply(@mean,Systolic,G);
TID.meanDiastolic = splitapply(@mean,Diastolic,G)
TID=4×4 table
      Gender      Smoker    meanSystolic    meanDiastolic
    __________    ______    ____________    _____________

    {'Female'}    false        119.42           79.05    
    {'Female'}    true            129          89.231    
    {'Male'  }    false        119.35          79.885    
    {'Male'  }    true         129.57          90.333    

入力引数

すべて折りたたむ

グループ化変数。ベクトル、文字ベクトルの cell 配列または string 配列として指定します。A の一意の値がグループを識別します。

A がベクトルである場合、数値、あるいは categoricalcalendarDurationdatetimedurationlogicalstring のデータ型にすることができます。

グループ化変数。テーブルとして指定します。findgroups は各 table 変数を個別のグループ化変数として扱います。この変数は数値、あるいは categoricalcalendarDurationdatetimedurationlogicalstring のデータ型にすることができます。

出力引数

すべて折りたたむ

グループ番号。正の整数のベクトルとして返されます。グループ化変数内で N 個のグループが識別された場合、1 ~ N の各整数が 1 つのグループを指定します。グループ化変数に空の文字ベクトルか、NaN 値、NaT 値または未定義のカテゴリカル値が含まれる場合、G には NaN が含まれます。

  • グループ化変数がベクトルである場合、G およびグループ化変数はすべて同じサイズになります。

  • グループ化変数がテーブル内にある場合、G の長さはテーブルの行数に等しくなります。

各グループを識別する値。ベクトルまたは文字ベクトルの cell 配列として返されます。ID の値は、A の一意の値を並べ替えた値です。

各グループを識別する一意の値のテーブル。テーブルとして返されます。TID の変数には、T の対応する変数から取得した一意の値を並べ替えた値が格納されます。ただし、TID および T の行数は必ずしも同じとは限りません。

詳細

すべて折りたたむ

分割-適用-結合のワークフロー

"分割-適用-結合" のワークフローはデータ解析で一般的に知られています。このワークフローでは、解析者がデータをグループに分割し、各グループに関数を適用して、その結果を結合します。次の図にワークフローの一般的な例を示します。このワークフロー各部は findgroupssplitapply を使用して実装されています。

拡張機能

バージョン履歴

R2015b で導入