groupcounts
グループの要素数
構文
説明
テーブル データ
は、table または timetable G
= groupcounts(T
,groupvars
)T
に対応する一意のグループ化変数の組み合わせ、各グループのメンバー数、各グループが表すデータのパーセンテージ ([0, 100] の範囲) を返します。グループは、同じ一意の値の組み合わせをもつ groupvars
の変数の行により定義されます。出力 table の各行は 1 つのグループに対応しています。たとえば、G = groupcounts(T,"HealthStatus")
は、変数 HealthStatus
の各グループの数とパーセンテージを含む table を返します。
詳細については、グループ カウントの計算を参照してください。
は、前述の任意の構文について名前と値の引数を 1 つ以上使用して、追加のグループ化プロパティを指定します。たとえば、G
= groupcounts(___,Name,Value
)G = groupcounts(T,"Category1","IncludeMissingGroups",false)
は、Category1
の <undefined>
で示される categorical
型の欠損データからなるグループを除外します。
配列データ
は、入力配列についての前述の構文のいずれかについて、名前と値の引数を 1 つ以上使用して、追加のグループ化プロパティを指定します。B
= groupcounts(___,Name,Value
)
例
table 変数のグループ化
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
要素数がゼロのグループを含めて、グループごとに行を返すには、IncludeEmptyGroups
を true
に指定します。
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 = 8x1 categorical
Excellent
Excellent
Fair
Fair
Good
Good
Poor
Poor
BG{2}
ans = 8x1 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
入力引数
T
— 入力テーブル
table | timetable
入力 table。table または timetable として指定します。
A
— 入力配列
列ベクトル | 行列 | cell 配列
入力配列。列ベクトル、行列として保存された列ベクトルのグループ、または列ベクトル、文字の行ベクトル、行列の cell 配列として指定します。
groupvars
— グループ化変数またはベクトル
スカラー | ベクトル | 行列 | cell 配列 | パターン | 関数ハンドル | table vartype
添字
グループ化変数またはベクトル。次の表のオプションのいずれかとして指定します。入力データが table または timetable の場合、groupvars
はデータ内のグループの計算にどの変数を使用するかを表します。groupvars
で指定されていないその他の変数は演算されず、出力に渡されません。
インデックス方式 | 例 |
---|---|
変数名:
|
|
変数インデックス:
|
|
関数ハンドル:
|
|
変数の型:
|
|
例: groupcounts(T,"Var3")
groupbins
— グループ化変数またはベクトルのビン化スキーム
"none"
(既定値) | ビンのエッジのベクトル | ビンの数 | 時間の長さ (ビンの幅) | 時間単位の名前 (ビンの幅) | ビン化方法の cell 配列
グループ化変数またはベクトルのビン化スキーム。以下の 1 つ以上のビン化方法として指定します。グループ化変数またはベクトルとビン化スキーム引数は同じサイズでなければなりませんが、いずれかをスカラーにすることもできます。
"none"
— ビン化なし。ビンのエッジのベクトル — ビンのエッジはビンを定義します。エッジは、数値として指定するか、
datetime
グループ化変数またはベクトルのdatetime
値として指定できます。ビンの数 — この数字は、作成する等間隔のビンの数を決定します。ビンの数を正の整数スカラーとして指定できます。
時間の長さ (ビンの幅) — この時間の長さは各ビンの幅を決定します。ビンの幅は、
datetime
またはduration
グループ化変数またはベクトルのduration
またはcalendarDuration
スカラーとして指定できます。時間単位の名前 (ビンの幅) — この時間単位の名前は各ビンの幅を決定します。ビンの幅は、
datetime
またはduration
グループ化変数またはベクトルについての以下の表のいずれかのオプションとして指定できます。値 説明 データ型 "second"
各ビンは 1 秒です。
datetime
とduration
"minute"
各ビンは 1 分です。
datetime
とduration
"hour"
各ビンは 1 時間です。
datetime
とduration
"day"
各ビンは 1 カレンダー日です。この値には、夏時間のシフトが考慮されます。
datetime
とduration
"week"
各ビンは 1 カレンダー週です。 datetime
のみ"month"
各ビンは 1 カレンダー月です。 datetime
のみ"quarter"
各ビンは 1 カレンダー四半期です。 datetime
のみ"year"
各ビンは 1 カレンダー年です。この値には、うるう日が考慮されます。
datetime
とduration
"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")
IncludedEdge
— ビン化スキームに含めるビン エッジ
"left"
(既定値) | "right"
ビン化スキームに含めるビン エッジ。"left"
または "right"
のいずれかとして指定し、ビン区間のどちらの端が含まれるかを示します。
IncludedEdge
を指定できるのは、groupbins
も指定し、かつその値がすべてのグループ化変数またはベクトルのすべてのビン化方法に適用される場合のみです。
IncludeMissingGroups
— 欠損値をグループとして処理するオプション
true
または 1
(既定値) | false
または 0
欠損値をグループとして処理するオプション。数値または logical 1
(true
) または 0
(false
) として指定します。IncludeMissingGroups
が true
の場合、groupcounts
はグループ化変数またはベクトルに含まれる欠損値 (NaN
など) をグループとして処理します。グループ化変数またはベクトルに欠損値が含まれていない場合、または IncludeMissingGroups
が false
の場合、groupcounts
は欠損値をグループとして処理しません。
IncludeEmptyGroups
— グループ カウント操作に空のグループを含めるオプション
false
または 0
(既定値) | true
または 1
グループ カウント操作に空のグループを含めるオプション。数値または logical 0
(false
) または 1
(true
) として指定します。IncludeEmptyGroups
が false
の場合、groupcounts
は空のグループを除外します。IncludeEmptyGroups
が true
の場合、groupcounts
は空のグループを含めます。
空のグループは次の場合に発生します。
グループ化変数またはベクトルの可能な値が入力データ (categorical、logical、ビン化された数値変数またはベクトルなど) で表されていない。たとえば、入力テーブルに logical グループ化変数の
true
の値を含む行がない場合、true
は空のグループを定義します。グループ化変数またはベクトルの一意の組み合わせが入力データで表されていない。たとえば、入力テーブルにグループ化変数
A
の値がA1
かつグループ化変数B
の値がB1
である行がない場合、A1_B1
は空のグループを定義します。
出力引数
G
— 出力テーブル
table
table または timetable 入力データの出力 table。G
には計算されたグループ、各グループの要素数、および各グループ カウントで表されるパーセンテージが含まれます。グループ化変数が 1 つの場合、"sorted"
オプションを指定した関数 unique
により返された順序に従って、出力グループが並べ替えられます。
B
— グループ カウント
列ベクトル
配列の入力データのグループ カウント。列ベクトルとして返されます。B
には各グループの要素数が含まれます。
BG
— グループ
列ベクトル | 列ベクトルの cell 配列
配列の入力データのグループ。列ベクトルまたは列ベクトルの cell 配列として返されます。グループ化ベクトルが 1 つの場合、"sorted"
オプションを指定した関数 unique
により返された順序に従って、出力グループが並べ替えられます。
入力ベクトルが複数ある場合、BG
は長さの等しい列ベクトルを含む cell 配列になります。各グループの情報は、BG
のすべてのベクトルにまたがる行の要素に格納されます。各グループは、出力配列 B
の対応する行にマッピングされます。
BP
— グループ カウントの割合
列ベクトル
配列の入力データのグループ カウントのパーセンテージ。列ベクトルとして返されます。BP
には B
の各グループのパーセンテージ (範囲は [0, 100]
) が含まれます。
詳細
グループ カウントの計算
この表はグループ カウントの計算を示します。
サンプル表 T | 構文の例 | 結果の表 |
---|---|---|
| groupcounts(T,"VarA") | |
groupcounts(T,["VarA" "VarB"],{"none",[-Inf 0 Inf]}) | |
ヒント
groupcounts
を何度も呼び出す場合、可能であればパフォーマンス向上のためグループ変数をcategorical
型またはlogical
型に変換することを検討してください。たとえば、string 配列のグループ化変数 (要素が"Poor"
、"Fair"
、"Good"
、"Excellent"
であるHealthStatus
など) がある場合、categorical(HealthStatus)
コマンドを使用してこれを categorical 変数に変換することができます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
最初の入力引数は cell 配列をサポートしません。
引数
groupvars
は関数ハンドルをサポートしません。名前と値の引数
IncludeEmptyGroups
はサポートされていません。グループの順序は、インメモリ
groupcounts
の計算と比べ異なっている場合があります。離散化された datetime 配列によってグループ化する場合、カテゴリのグループ名はインメモリ
groupcounts
計算と比べ異なっています。
詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
入力引数は、入力データを除きすべて定数でなければなりません。
スパース入力はサポートされません。
datetime データと duration データの場合、ビン化スキームはサポートされません。
グループ変数の数が実行時に変動する可能性がある場合、2 番目の出力
BG
は cell 配列です。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2019a で導入R2024a: グループ化変数に複数のビン化方法を適用
ビン化方法の cell 配列を指定して、1 つのグループ化変数またはベクトルに複数のビン化方法を適用します。
R2022a: コード生成のサポート
関数 groupcounts
の C または C++ コードを生成します。使用上の注意事項および制限事項については、C/C++ コード生成を参照してください。
R2021a: 割合が table
出力に自動的に含まれる
groupcounts
が table または timetable 内のデータに対して演算を行う際は、出力にパーセンテージの table 変数が追加で含まれます。パーセンテージは [0, 100]
の範囲になり、table 変数 Percent
に含まれます。
特定の table 変数を参照するコードには影響しません。ただし、出力 table 内の変数の数に依存するコードは更新が必要な場合があります。
参考
関数
pivot
|grouptransform
|groupsummary
|groupfilter
|findgroups
|splitapply
|discretize
|varfun
|rowfun
ライブ エディター タスク
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)