メインコンテンツ

groupcounts

説明

テーブル データ

G = groupcounts(T,groupvars) は、table または timetable T に対応する一意のグループ化変数の組み合わせ、各グループのメンバー数、各グループが表すデータのパーセンテージ ([0, 100] の範囲) を返します。グループは、同じ一意の値の組み合わせをもつ groupvars の変数の行により定義されます。出力 table の各行は 1 つのグループに対応しています。たとえば、G = groupcounts(T,"HealthStatus") は、変数 HealthStatus の各グループの数とパーセンテージを含む table を返します。

詳細については、グループ カウントの計算を参照してください。

G = groupcounts(T,groupvars,groupbins) は、グループ化の前にビン化スキーム groupbins に従って groupvars の行をビン化するよう指定します。たとえば、G = groupcounts(T,"SaleDate","year") は、グループ化変数 SaleDate に従って、各年内の T におけるすべての販売のグループの件数とグループのパーセンテージを返します。

G = groupcounts(___,Name,Value) は、前述の任意の構文について名前と値の引数を 1 つ以上使用して、追加のグループ化プロパティを指定します。たとえば、G = groupcounts(T,"Category1","IncludeMissingGroups",false) は、Category1<undefined> で示される categorical 型の欠損データからなるグループを除外します。

配列データ

B = groupcounts(A) は、ベクトル、行列、または cell 配列 A の各グループのメンバー数を返します。グループは、同じ一意の値の組み合わせをもつ A の列ベクトルの行により定義されます。B の各行は、1 つのグループについての件数を含みます。

B = groupcounts(A,groupbins) は、グループ化の前にビン化スキーム groupbins に従ってデータをビン化するよう指定します。

B = groupcounts(___,Name,Value) は、入力配列についての前述の構文のいずれかについて、名前と値の引数を 1 つ以上使用して、追加のグループ化プロパティを指定します。

[B,BG,BP] = groupcounts(A,___) は追加のグループ情報を返します。BGB の行に対応する一意のグループ化ベクトルの組み合わせです。BPB の各グループ カウントが表すデータのパーセンテージです。パーセンテージの範囲は [0, 100] です。

すべて折りたたむ

table データに基づいて、各グループの要素数を計算します。

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

HealthStatus = categorical(["Poor"; "Good"; "Fair"; "Fair"; "Poor"; "Excellent"; "Good"; "Excellent"]);
Smoker = logical([1; 0; 0; 1; 1; 0; 0; 1]);
Weight = [176; 153; 131; 133; 119; 120; 140; 129];
T = table(HealthStatus,Smoker,Weight)
T=8×3 table
    HealthStatus    Smoker    Weight
    ____________    ______    ______

     Poor           true       176  
     Good           false      153  
     Fair           false      131  
     Fair           true       133  
     Poor           true       119  
     Excellent      false      120  
     Good           false      140  
     Excellent      true       129  

個人を健康状態でグループ化し、各グループにいる個人のパーセンテージを数値で返します。

G1 = groupcounts(T,"HealthStatus")
G1=4×3 table
    HealthStatus    GroupCount    Percent
    ____________    __________    _______

     Excellent          2           25   
     Fair               2           25   
     Good               2           25   
     Poor               2           25   

個人を健康状態と喫煙状況でグループ化し、各グループにいる個人のパーセンテージを数値で返します。既定では、groupcounts は要素数がゼロのグループを表示しないため、グループ化変数値の一意の組み合わせのうち一部は返されません。

G2 = groupcounts(T,["HealthStatus","Smoker"])
G2=6×4 table
    HealthStatus    Smoker    GroupCount    Percent
    ____________    ______    __________    _______

     Excellent      false         1          12.5  
     Excellent      true          1          12.5  
     Fair           false         1          12.5  
     Fair           true          1          12.5  
     Good           false         2            25  
     Poor           true          2            25  

要素数がゼロのグループを含めて、グループごとに行を返すには、IncludeEmptyGroupstrue に指定します。

G3 = groupcounts(T,["HealthStatus","Smoker"],"IncludeEmptyGroups",true)
G3=8×4 table
    HealthStatus    Smoker    GroupCount    Percent
    ____________    ______    __________    _______

     Excellent      false         1          12.5  
     Excellent      true          1          12.5  
     Fair           false         1          12.5  
     Fair           true          1          12.5  
     Good           false         2            25  
     Good           true          0             0  
     Poor           false         0             0  
     Poor           true          2            25  

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

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]';
ItemsSold = [14 13 8 5 10 16 8 6 7 11]';
TT = timetable(TimeStamps,Profit,ItemsSold)
TT=10×2 timetable
    TimeStamps     Profit    ItemsSold
    ___________    ______    _________

    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    

品目番号の区間にグループをビン化し、販売済み品目の合計数別にグループ カウントを計算します。

G = groupcounts(TT,"ItemsSold",[0 4 8 12 16])
G=3×3 table
    disc_ItemsSold    GroupCount    Percent
    ______________    __________    _______

       [4, 8)             3           30   
       [8, 12)            4           40   
       [12, 16]           3           30   

曜日ごとにビン化されたグループ カウントを計算します。

G = groupcounts(TT,"TimeStamps","dayname")
G=5×3 table
    dayname_TimeStamps    GroupCount    Percent
    __________________    __________    _______

        Tuesday               2           20   
        Wednesday             2           20   
        Thursday              1           10   
        Friday                2           20   
        Saturday              3           30   

複数回出現するベクトル内の要素を判別します。

1 から 5 までの値をもつ列ベクトルを作成します。

A = [1 1 2 2 3 5 3 3 1 4]';

ベクトル内の一意のグループを判別し、グループ メンバーをカウントします。

[B,BG] = groupcounts(A)
B = 5×1

     3
     2
     3
     1
     1

BG = 5×1

     1
     2
     3
     4
     5

カウントが 1 を超えるグループの論理インデックスを作成して、複数回出現するベクトル内の要素を判別します。グループにインデックスを付けて、重複しているベクトル要素を返します。

duplicates = BG(B > 1)
duplicates = 3×1

     1
     2
     3

健康状態と喫煙状況によりグループ化された集団のグループ カウントを計算します。

8 人の個人に関する情報を異なるタイプの 3 つのベクトルとして保存します。

HealthStatus = categorical(["Poor"; "Good"; "Fair"; "Fair"; "Poor"; "Excellent"; "Good"; "Excellent"]);
Smoker = logical([1; 0; 0; 1; 1; 0; 0; 1]);
Weight = [176; 153; 131; 133; 119; 120; 140; 129];

健康状態と喫煙状況でグループ化し、グループ カウントを計算します。3 つの出力を指定し、グループ BG とグループ カウントのパーセンテージ BP も返します。

BG は、行基準で要素を見た場合のグループを表す 2 つのベクトルを含む cell 配列です。たとえば、BG{1} の最初の行からは、最初のグループの個人の健康状態が Excellent であることがわかり、BG{2} の最初の行からは、これらの患者が非喫煙者であることがわかります。最後に、BP には、BG の対応する各グループのメンバーのパーセンテージが格納されます。

[B,BG,BP] = groupcounts({HealthStatus,Smoker},"IncludeEmptyGroups",true);
B
B = 8×1

     1
     1
     1
     1
     2
     0
     0
     2

BG{1}
ans = 8×1 categorical
     Excellent 
     Excellent 
     Fair 
     Fair 
     Good 
     Good 
     Poor 
     Poor 

BG{2}
ans = 8×1 logical array

   0
   1
   0
   1
   0
   1
   0
   1

BP
BP = 8×1

   12.5000
   12.5000
   12.5000
   12.5000
   25.0000
         0
         0
   25.0000

入力引数

すべて折りたたむ

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

入力配列。列ベクトル、行列として保存された列ベクトルのグループ、または列ベクトル、文字の行ベクトル、行列の cell 配列として指定します。

グループ化変数またはベクトル。次の表のオプションのいずれかとして指定します。入力データが table または timetable の場合、groupvars はデータ内のグループの計算にどの変数を使用するかを表します。groupvars で指定されていないその他の変数は演算されず、出力に渡されません。

インデックス方式指定する値

変数名

  • string スカラーまたは文字ベクトル

  • string 配列または文字ベクトルの cell 配列

  • pattern オブジェクト

  • "A" または 'A'A という名前の変数

  • ["A" "B"] または {'A','B'}A および B という名前の 2 つの変数

  • "Var"+digitsPattern(1)"Var" の後に数字 1 桁が続く名前の変数

変数インデックス

  • table 内の変数の位置を参照するインデックス番号

  • 数値のベクトル

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 (false) 値は省略できます。

  • 3 — table の 3 番目の変数

  • [2 3] — table の 2 番目と 3 番目の変数

  • [false false true] — 3 番目の変数

関数ハンドル

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

  • @isnumeric — 数値を含んでいるすべての変数

変数の型

  • 指定した型の変数を選択する vartype 添字

  • vartype("numeric") — 数値を含んでいるすべての変数

例: groupcounts(T,"Var3")

グループ化変数またはベクトルのビン化スキーム。以下の 1 つ以上のビン化方法として指定します。グループ化変数またはベクトルとビン化スキーム引数は同じサイズでなければなりませんが、いずれかをスカラーにすることもできます。

  • "none" — ビン化なし。

  • ビンのエッジのベクトル — ビンのエッジはビンを定義します。エッジは、数値として指定するか、datetime グループ化変数またはベクトルの datetime 値として指定できます。

  • ビンの数 — この数字は、作成する等間隔のビンの数を決定します。ビンの数を正の整数スカラーとして指定できます。

  • 時間の長さ (ビンの幅) — この時間の長さは各ビンの幅を決定します。ビンの幅は、datetime または duration グループ化変数またはベクトルの duration または calendarDuration スカラーとして指定できます。

  • 時間単位の名前 (ビンの幅) — この時間単位の名前は各ビンの幅を決定します。ビンの幅は、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 のみ

例: G = groupcounts(T,"Var1",[-Inf 0 Inf])

例: G = groupcounts(T,["Var1" "Var2"],{"none" "year"})

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: G = groupcounts(T,groupvars,groupbins,IncludedEdge="right")

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: G = groupcounts(T,groupvars,groupbins,"IncludedEdge","right")

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

IncludedEdge を指定できるのは、groupbins も指定し、かつその値がすべてのグループ化変数またはベクトルのすべてのビン化方法に適用される場合のみです。

欠損値をグループとして処理するオプション。数値または logical 1 (true) または 0 (false) として指定します。IncludeMissingGroupstrue の場合、groupcounts はグループ化変数またはベクトルに含まれる欠損値 (NaN など) をグループとして処理します。グループ化変数またはベクトルに欠損値が含まれていない場合、または IncludeMissingGroupsfalse の場合、groupcounts は欠損値をグループとして処理しません。

グループ カウント操作に空のグループを含めるオプション。数値または logical 0 (false) または 1 (true) として指定します。IncludeEmptyGroupsfalse の場合、groupcounts は空のグループを除外します。IncludeEmptyGroupstrue の場合、groupcounts は空のグループを含めます。

空のグループは次の場合に発生します。

  • グループ化変数またはベクトルの可能な値が入力データ (categorical、logical、ビン化された数値変数またはベクトルなど) で表されていない。たとえば、入力 table に logical グループ化変数の true の値を含む行がない場合、true は空のグループを定義します。

  • グループ化変数またはベクトルの一意の組み合わせが入力データで表されていない。たとえば、入力 table にグループ化変数 A の値が A1 かつグループ化変数 B の値が B1 である行がない場合、A1_B1 は空のグループを定義します。

出力引数

すべて折りたたむ

table または timetable 入力データの出力 table。G には計算されたグループ、各グループの要素数、および各グループ カウントで表されるパーセンテージが含まれます。グループ化変数が 1 つの場合、"sorted" オプションを指定した関数 unique により返された順序に従って、出力グループが並べ替えられます。

配列の入力データのグループ カウント。列ベクトルとして返されます。B には各グループの要素数が含まれます。

配列の入力データのグループ。列ベクトルまたは列ベクトルの cell 配列として返されます。グループ化ベクトルが 1 つの場合、"sorted" オプションを指定した関数 unique により返された順序に従って、出力グループが並べ替えられます。

入力ベクトルが複数ある場合、BG は長さの等しい列ベクトルを含む cell 配列になります。各グループの情報は、BG のすべてのベクトルにまたがる行の要素に格納されます。各グループは、出力配列 B の対応する行にマッピングされます。

配列の入力データのグループ カウントのパーセンテージ。列ベクトルとして返されます。BP には B の各グループのパーセンテージ (範囲は [0, 100]) が含まれます。

詳細

すべて折りたたむ

ヒント

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

拡張機能

すべて展開する

バージョン履歴

R2019a で導入

すべて展開する