ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

groupsummary

グループ要約の計算

構文

G = groupsummary(T,groupvars)
G = groupsummary(T,groupvars,method)
G = groupsummary(T,groupvars,method,datavars)
G = groupsummary(T,groupvars,groupbins)
G = groupsummary(T,groupvars,groupbins,method)
G = groupsummary(T,groupvars,groupbins,method,datavars)
G = groupsummary(T,___,Name,Value)
B = groupsummary(A,groupvars,method)
B = groupsummary(A,groupvars,groupbins,method)
B = groupsummary(A,___,Name,Value)
[B,BG] = groupsummary(A,___)
[B,BG,BC] = groupsummary(A,___)

説明

G = groupsummary(T,groupvars) は、table または timetable T 内の各グループの要素をカウントするテーブルを返します。グループは、グループ化変数 groupvars の一意の組み合わせです。たとえば、G = groupsummary(T,'Gender') は、変数 Gender 内の Male 要素の数と、Female 要素の数を返します。

G = groupsummary(T,groupvars,method) は、method で指定された計算も返します。たとえば、G = groupsummary(T,'Gender','median') は、両方のグループの要素数に加えて、両方の性別に対する T 内のすべての非グループ化変数の中央値を返します。

G = groupsummary(T,groupvars,method,datavars) は、method で計算が適用される変数 datavars も指定します。

G = groupsummary(T,groupvars,groupbins) は、groupvars 内のデータをビン化する方法を指定します。たとえば、G = groupsummary(T,'SaleDate','year') は、グループ化変数 SaleDate に従って、各年度内の T のすべての売上げのグループ カウントを与えます。

G = groupsummary(T,groupvars,groupbins,method) は、method で指定された計算の groupbins に従って、データをビン化します。

G = groupsummary(T,groupvars,groupbins,method,datavars) は、groupbins に従ってデータをビンに入れ、method で計算を適用する変数 datavars を指定します。

G = groupsummary(T,___,Name,Value) は、名前と値のペアを 1 つ以上使用して、追加のグループ化プロパティを指定します。たとえば、G = groupsummary(T,'Category1','IncludeMissingGroups',false) は、<undefined> で指定された欠損 categorical データから作成されたグループを除外します。

B = groupsummary(A,groupvars,method) は、groupvars のグループ化ベクトルに従って行列 A のすべての列をグループ化し、method で指定された計算を各グループに適用します。出力 B は、各グループの連結計算を含む行列です。

B = groupsummary(A,groupvars,groupbins,method) は、method で指定された計算の groupbins に従って、データをビン化します。

B = groupsummary(A,___,Name,Value) は、名前と値のペアを 1 つ以上使用して、追加のグループ化プロパティを指定します。

[B,BG] = groupsummary(A,___) は、各グループ化ベクトルのグループも返します。

[B,BG,BC] = groupsummary(A,___) は、各グループのグループ数も返します。

すべて折りたたむ

table 変数の要約統計を計算します。

5 人の個人に関する情報を含む table T を作成します。

Gender = ["male";"female";"female";"male";"male"];
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
T = table(Gender,Age,Height,Weight)
T=5×4 table
     Gender     Age    Height    Weight
    ________    ___    ______    ______

    "male"      38       71       176  
    "female"    43       69       163  
    "female"    38       64       131  
    "male"      40       67       133  
    "male"      49       64       119  

グループ化変数として 'Gender' を指定して男性と女性の数を計算します。

G = groupsummary(T,'Gender')
G=2×2 table
     Gender     GroupCount
    ________    __________

    "female"        2     
    "male"          3     

女性と男性の平均年齢、身長、体重をそれぞれ計算します。

G = groupsummary(T,'Gender','mean')
G=2×5 table
     Gender     GroupCount    mean_Age    mean_Height    mean_Weight
    ________    __________    ________    ___________    ___________

    "female"        2            40.5         66.5            147   
    "male"          3          42.333       67.333         142.67   

性別でグループ化して、平均身長のみを計算します。

G = groupsummary(T,'Gender','median','Height')
G=2×3 table
     Gender     GroupCount    median_Height
    ________    __________    _____________

    "female"        2             66.5     
    "male"          3               67     

2 つのグループ化変数を使用してテーブル データをグループ化します。

5 人の個人に関する情報を含む table T を作成します。

Gender = ["male";"female";"male";"female";"male"];
Smoker = logical([1;0;1;0;1]);
Weight = [176;163;131;133;119];
T = table(Gender,Smoker,Weight)
T=5×3 table
     Gender     Smoker    Weight
    ________    ______    ______

    "male"      true       176  
    "female"    false      163  
    "male"      true       131  
    "female"    false      133  
    "male"      true       119  

性別および喫煙状態でグループ化した、平均体重を計算します。既定では、性別と喫煙状態の 2 つの組み合わせは空のグループであるため、出力に表されません。

G = groupsummary(T,{'Gender','Smoker'},'mean','Weight')
G=2×4 table
     Gender     Smoker    GroupCount    mean_Weight
    ________    ______    __________    ___________

    "female"    false         2             148    
    "male"      true          3             142    

空の組み合わせを含む、すべてのグループの組み合わせを表示するには、'IncludeEmptyGroups' パラメーター値を true に設定します。

G = groupsummary(T,{'Gender','Smoker'},'mean','Weight','IncludeEmptyGroups',true)
G=4×4 table
     Gender     Smoker    GroupCount    mean_Weight
    ________    ______    __________    ___________

    "female"    false         2             148    
    "female"    true          0             NaN    
    "male"      false         0             NaN    
    "male"      true          3             142    

指定されたビンに従ってデータをグループ化します。

1 か月以内の日数分の売上情報が含まれる timetable を作成します。

TimeStamps = datetime([2017 3 4; 2017 3 2; 2017 3 15; 2017 3 10;...
                       2017 3 14; 2017 3 31; 2017 3 25;...
                       2017 3 29; 2017 3 21; 2017 3 18]);
Profit = [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';
TotalItemsSold = [14 13 8 5 10 16 8 6 7 11]';
TT = timetable(TimeStamps,Profit,TotalItemsSold)
TT=10×2 timetable
    TimeStamps     Profit    TotalItemsSold
    ___________    ______    ______________

    04-Mar-2017     2032           14      
    02-Mar-2017     3071           13      
    15-Mar-2017     1185            8      
    10-Mar-2017     2587            5      
    14-Mar-2017     1998           10      
    31-Mar-2017     2899           16      
    25-Mar-2017     3112            8      
    29-Mar-2017      909            6      
    21-Mar-2017     2619            7      
    18-Mar-2017     3085           11      

品目番号の区間にグループをビン化し、売却済品目合計でグループ化された平均利益を計算します。

format shorte
G = groupsummary(TT,'TotalItemsSold',[0 4 8 12 16],'mean','Profit')
G=3×3 table
    disc_TotalItemsSold    GroupCount    mean_Profit
    ___________________    __________    ___________

         [4, 8)            3.0000e+00    2.0383e+03 
         [8, 12)           4.0000e+00    2.3450e+03 
         [12, 16]          3.0000e+00    2.6673e+03 

曜日別にグループ化された平均利益を計算します。

G = groupsummary(TT,'TimeStamps','dayname','mean','Profit')
G=5×3 table
    dayname_TimeStamps    GroupCount    mean_Profit
    __________________    __________    ___________

        Tuesday           2.0000e+00    2.3085e+03 
        Wednesday         2.0000e+00    1.0470e+03 
        Thursday          1.0000e+00    3.0710e+03 
        Friday            2.0000e+00    2.7430e+03 
        Saturday          3.0000e+00    2.7430e+03 

日付のベクトルと、対応する利益額のベクトルを作成します。

timeStamps = datetime([2017 3 4; 2017 3 2; 2017 3 15; 2017 3 10; ...
                       2017 3 14; 2017 3 31; 2017 3 25; ...
                       2017 3 29; 2017 3 21; 2017 3 18]);
profit = [2032 3071 1185 2587 1998 2899 3112 909 2619 3085]';

曜日別の平均利益を計算します。各グループの平均、グループ名、メンバー数を表示します。

format shorte
[meanDailyProfit,dayOfWeek,dailyCounts] = groupsummary(profit,timeStamps,'dayname','mean')
meanDailyProfit = 5×1

   2.3085e+03
   1.0470e+03
   3.0710e+03
   2.7430e+03
   2.7430e+03

dayOfWeek = 5x1 categorical array
     Tuesday 
     Wednesday 
     Thursday 
     Friday 
     Saturday 

dailyCounts = 5×1

     2
     2
     1
     2
     3

性別と喫煙状況に基づいて、4 つのグループの平均体重を計算します。

患者情報を異なるタイプの 3 つのベクトルとして保存します。

Gender = ["male";"female";"male";"female";"male"];
Smoker = logical([1;0;1;0;1]);
Weight = [176;163;131;133;119];

性別と喫煙状況でグループ化し、平均体重を計算します。B には各グループの平均値 (空のグループの場合は NaN) が格納されます。BG は、行基準で要素を見た場合のグループを表す 2 つのベクトルを含む cell 配列です。たとえば、BG{1} の最初の行からは、最初のグループの患者が女性であることがわかり、BG{2} の最初の行からは、患者が非喫煙者であることがわかります。最後に、BC には、BG の対応する各グループのメンバー数が格納されます。

[B,BG,BC] = groupsummary(Weight,{Gender,Smoker},'mean','IncludeEmptyGroups',true);
B
B = 4×1

   148
   NaN
   NaN
   142

BG{1}
ans = 4x1 string array
    "female"
    "female"
    "male"
    "male"

BG{2}
ans = 4x1 logical array

   0
   1
   0
   1

BC
BC = 4×1

     2
     0
     0
     3

入力引数

すべて折りたたむ

入力データ。table または timetable として指定します。

入力データ。ベクトルまたは行列として指定します。

グループ化変数またはベクトル。スカラー、ベクトル、行列、cell 配列、または関数ハンドルとして指定します。

行列内の入力データの場合、groupvarsA と同じ数の行をもつ列ベクトル、または行列あるいは cell 配列の中に配置された列ベクトルのグループのいずれかとなります。

table 内の入力データの場合、groupvars は入力 table のどの列をグループの計算に使用するかを表し、次のいずれかとなります。

  • 単一の table 変数名を指定する文字ベクトルまたはスカラー string

  • 各要素が table 変数名である、文字ベクトルの cell 配列または string 配列

  • table 変数インデックスのベクトル

  • 各要素が table 変数に対応する論理ベクトル。true の場合は対応する変数を含めて、false の場合は対応する変数を除外します。

  • 入力として table 変数をとり、logical スカラーを返す関数ハンドル

例: 'Age'

例: {'Height','Weight'}

計算方法。次のいずれかとして指定します。

  • 'sum' — 和

  • 'mean' — 平均値

  • 'median' — 中央値

  • 'mode' — 最頻値

  • 'var' — 分散

  • 'std' — 標準偏差

  • 'min' — 最小値

  • 'max' — 最大値

  • 'range' — 最大値から最小値を引いた値

  • 'nummissing' — 欠損要素の数

  • 'nnz' — 非ゼロと非 NaN 要素の数

  • 'all' — 前述のすべての計算

また、グループごとに 1 つの要素を返す関数ハンドルを指定することもできます。一度に複数の計算を指定するには、{'mean','median'} などのように cell 配列にオプションをリストします。

table 入力のデータ変数。スカラー、ベクトル、cell 配列、関数ハンドルとして指定します。datavars は方法を適用する入力テーブルの列を示し、次のいずれかのオプションになります。

  • 単一の table 変数名を指定する文字ベクトルまたはスカラー string

  • 各要素が table 変数名である、文字ベクトルの cell 配列または string 配列

  • table 変数インデックスのベクトル

  • 各要素が table 変数に対応する論理ベクトル。true の場合は対応する変数を含めて、false の場合は対応する変数を除外します。

  • 入力として table 変数をとり、logical スカラーを返す関数ハンドル

datavars が指定されない場合、groupsummary はそれぞれの非グループ化変数に計算を適用します。

例: 'Profit'

例: {'Income','Expenses'}

例: @isnumeric

ビン化方式。次のいずれかのオプションとして指定します。

  • ビン化しないことを示す 'none'

  • 数値ベクトル、または datetime ベクトル (datetime グループ化変数またはベクトルの場合) として指定されるビン エッジのリスト

  • 整数値スカラーとして指定されるビン数

  • ビンの幅を示す duration 型または calendarDuration 型のスカラーとして指定される時間範囲 (datetime または duration グループ化変数またはベクトルの場合のみ)

  • 次のいずれかの文字ベクトルとして指定される時間ビン (datetime または duration グループ化変数またはベクトルの場合のみ)

    説明データ型
    'second'

    各ビンは 1 秒です。

    datetimeduration
    'minute'

    各ビンは 1 分です。

    datetimeduration
    'hour'

    各ビンは 1 時間です。

    datetimeduration
    'day'

    各ビンは 1 カレンダー日です。この値には、夏時間のシフトが考慮されます。

    datetimeduration
    'week'各ビンは 1 カレンダー週です。datetime のみ
    'month'各ビンは 1 カレンダー月です。datetime のみ
    'quarter'各ビンは 1 カレンダー四半期です。datetime のみ
    'year'

    各ビンは 1 カレンダー年です。この値には、うるう日が考慮されます。

    datetimeduration
    'decade'各ビンは 10 年 (10 カレンダー年) です。datetime のみ
    'century'各ビンは 1 世紀 (100 カレンダー年) です。datetime のみ
    'secondofminute'

    ビンは 0 から 59 までの秒です。

    datetime のみ
    'minuteofhour'

    ビンは 0 から 59 までの分です。

    datetime のみ
    'hourofday'

    ビンは 0 から 23 までの時間です。

    datetime のみ
    'dayofweek'

    ビンは 1 から 7 までの曜日です。週の始まりは日曜日です。

    datetime のみ
    'dayname'ビンは 'Sunday' などの完全な曜日名です。datetime のみ
    'dayofmonth'ビンは 1 から 31 までの日です。datetime のみ
    'dayofyear'ビンは 1 から 366 までの日です。datetime のみ
    'weekofmonth'ビンは 1 から 6 までの週です。datetime のみ
    'weekofyear'ビンは 1 から 54 までの週です。datetime のみ
    'monthname'ビンは 'January' などの完全な月名です。datetime のみ
    'monthofyear'

    ビンは 1 から 12 までの月です。

    datetime のみ
    'quarterofyear'ビンは 1 から 4 までの四半期です。datetime のみ

  • 各グループ化変数またはベクトルのビン化ルールをリストする cell 配列

複数のグループ化変数を指定する場合、すべてのグループ化変数に適用される 1 つのビン化ルールを指定したり、グループ変数ごとのビン化方法が格納される cell 配列 ({'none',[0 2 4 Inf]} など) を指定することができます。

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: G = groupsummary(T,groupvars,groupbins,'IncludedEdge','right')

含めるビン エッジ。'left' または 'right' のいずれかとして指定し、ビン区間のどちらの端が含まれるかを示します。

この名前と値のペアは groupbins が指定されている場合にのみ指定できます。この値は、すべてのグループ化変数またはベクトルで、すべてのビン化方式に適用されます。

欠損グループ インジケーター。true または false として指定します。パラメーター値が true の場合、groupsummary には NaN などの欠損値で構成されたグループが表示されます。パラメーター値が false の場合、欠損グループは groupsummary に表示されません。

データ型: logical

空のグループ インジケーター。true または false として指定します。パラメーター値が false の場合、要素がゼロのグループは groupsummary に表示されません。パラメーター値が true の場合、groupsummary には空のグループが表示されます。

データ型: logical

出力引数

すべて折りたたむ

出力テーブル。グループごとに指定された計算が含まれる table として指定します。

出力行列。グループ計算が含まれるベクトルまたは行列として返されます。複数の方法を指定した場合、groupsummary はリストされた順序で計算を連結します。

行列入力データのグループ。グループ化ベクトルに対応する列ベクトル、または列ベクトルの cell 配列として指定します。

複数のグループ化ベクトルが使用されている場合、BG は長さが等しい列ベクトルを含む cell 配列となります。グループ情報を確認するには、BG のすべてのベクトルの要素を行単位で参照します。

グループ数。各グループのメンバー数が含まれる列ベクトルとして返されます。BC の長さは、BG で返されるグループ列ベクトルの長さと同じです。BC の各要素は、BG の該当する行のグループに対応します。

ヒント

  • groupsummary を何度も呼び出す場合、可能であればパフォーマンス向上のためグループ変数を categorical 型または logical 型に変換することを検討してください。たとえば、char 型のグループ化変数 (要素が 'Male''Female' である Gender など) がある場合、categorical(Gender) コマンドを使用してこれを categorical 値に変換することができます。

拡張機能

R2018a で導入