このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
グループ別に計算
説明
[グループ別に計算] タスクでは、データを対話的にグループ化して、グループごとに要約統計量を計算したり変換を実行したりフィルターを適用したりできます。このタスクは、ライブ スクリプト用の MATLAB® コードを自動生成します。
このタスクを使用すると、次を行うことができます。
配列、table、または timetable 内のデータのグループを定義する。
各グループ化に基づいてデータの要約、変換、またはフィルター処理を行う。
計算の結果を含む新しい table または timetable を出力する。
タスクを開く
[グループ別に計算] タスクを MATLAB エディターでライブ スクリプトに追加するには、次を行います。
[ライブ エディター] タブで [タスク] 、 [グループ別に計算] を選択します。
スクリプトのコード ブロック内に、
group
などの関連キーワードを入力します。コマンドの補完候補から [グループ別に計算] を選択します。
例
グループごとの統計量の計算
ライブ エディターの [グループ別に計算] タスクを使用してデータを対話的にグループ化し、演算の対象とする変数を指定して統計量を計算することで、データを要約します。
サンプル ファイル outages.csv
を使用して timetable を作成します。このファイルには、電力会社の停電を表す 6 列のデータが含まれています。列方向の変数 Region
および Cause
を categorical 配列に変換して、timetable を表示します。
outages = readtimetable("outages.csv");
outages.Region = categorical(outages.Region);
outages.Cause = categorical(outages.Cause)
outages=1468×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
____________________ _________ ______ __________ ____________________ _______________
01-Feb-2002 12:18:00 SouthWest 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm
23-Jan-2003 00:49:00 SouthEast 530.14 2.1204e+05 NaT winter storm
07-Feb-2003 21:15:00 SouthEast 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm
06-Apr-2004 05:44:00 West 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault
16-Mar-2002 06:18:00 MidWest 186.44 2.1275e+05 18-Mar-2002 23:23:00 severe storm
18-Jun-2003 02:49:00 West 0 0 18-Jun-2003 10:54:00 attack
20-Jun-2004 14:39:00 West 231.29 NaN 20-Jun-2004 19:16:00 equipment fault
06-Jun-2002 19:28:00 West 311.86 NaN 07-Jun-2002 00:51:00 equipment fault
16-Jul-2003 16:23:00 NorthEast 239.93 49434 17-Jul-2003 01:12:00 fire
27-Sep-2004 11:09:00 MidWest 286.72 66104 27-Sep-2004 16:37:00 equipment fault
05-Sep-2004 17:48:00 SouthEast 73.387 36073 05-Sep-2004 20:46:00 equipment fault
21-May-2004 21:45:00 West 159.99 NaN 22-May-2004 04:23:00 equipment fault
01-Sep-2002 18:22:00 SouthEast 95.917 36759 01-Sep-2002 19:12:00 severe storm
27-Sep-2003 07:32:00 SouthEast NaN 3.5517e+05 04-Oct-2003 07:02:00 severe storm
12-Nov-2003 06:12:00 West 254.09 9.2429e+05 17-Nov-2003 02:04:00 winter storm
18-Sep-2004 05:54:00 NorthEast 0 0 NaT equipment fault
⋮
ライブ エディターで [グループ別に計算] タスクを開きます。停電が発生した 5 つの地域別にデータをグループ化するには、outages
を入力データとして選択し、変数 Region
の一意の値でグループ化します。次に、[計算対象] フィールドで [すべての数値変数] を選択して変数 Loss
および Customers
に対して計算を行います。
[グループ別に計算] タスクでは、グループに対して 3 種類の計算を実行できます。停電データを要約するには、計算タイプを [グループ別に統計値を計算] に設定します。次に、数値変数 Loss
および Customers
の平均値と最大値を計算するには、[グループごとの計算] フィールドを使用して [平均値] メソッドと [最大値] メソッドを選択します。
結果の timetable には、各地域での停電に関するグループの観測値の数、平均電力損失、最大電力損失、影響を受けた顧客の平均数、影響を受けた顧客の最大数が含まれます。
outageStats=5×6 table
Region GroupCount mean_Loss max_Loss mean_Customers max_Customers
_________ __________ _________ ________ ______________ _____________
MidWest 142 1137.7 23141 2.4015e+05 3.972e+06
NorthEast 557 551.65 23418 1.4917e+05 5.9689e+06
SouthEast 389 495.35 8767.3 1.6776e+05 2.2249e+06
SouthWest 26 493.88 2796 2.6975e+05 1.8202e+06
West 354 433.37 16659 1.5201e+05 4.26e+06
グループごとの変換
ライブ エディターの [グループ別に計算] タスクを使用してデータを対話的にグループ化し、演算の対象とする変数を指定して変換操作を適用することで、データの解釈可能性または外観を向上させます。
サンプル ファイル outages.csv
を使用して timetable を作成します。このファイルには、電力会社の停電を表す 6 列のデータが含まれています。列方向の変数 Region
および Cause
を categorical 配列に変換して、timetable を表示します。
outages = readtimetable("outages.csv");
outages.Region = categorical(outages.Region);
outages.Cause = categorical(outages.Cause)
outages=1468×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
____________________ _________ ______ __________ ____________________ _______________
01-Feb-2002 12:18:00 SouthWest 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm
23-Jan-2003 00:49:00 SouthEast 530.14 2.1204e+05 NaT winter storm
07-Feb-2003 21:15:00 SouthEast 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm
06-Apr-2004 05:44:00 West 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault
16-Mar-2002 06:18:00 MidWest 186.44 2.1275e+05 18-Mar-2002 23:23:00 severe storm
18-Jun-2003 02:49:00 West 0 0 18-Jun-2003 10:54:00 attack
20-Jun-2004 14:39:00 West 231.29 NaN 20-Jun-2004 19:16:00 equipment fault
06-Jun-2002 19:28:00 West 311.86 NaN 07-Jun-2002 00:51:00 equipment fault
16-Jul-2003 16:23:00 NorthEast 239.93 49434 17-Jul-2003 01:12:00 fire
27-Sep-2004 11:09:00 MidWest 286.72 66104 27-Sep-2004 16:37:00 equipment fault
05-Sep-2004 17:48:00 SouthEast 73.387 36073 05-Sep-2004 20:46:00 equipment fault
21-May-2004 21:45:00 West 159.99 NaN 22-May-2004 04:23:00 equipment fault
01-Sep-2002 18:22:00 SouthEast 95.917 36759 01-Sep-2002 19:12:00 severe storm
27-Sep-2003 07:32:00 SouthEast NaN 3.5517e+05 04-Oct-2003 07:02:00 severe storm
12-Nov-2003 06:12:00 West 254.09 9.2429e+05 17-Nov-2003 02:04:00 winter storm
18-Sep-2004 05:54:00 NorthEast 0 0 NaT equipment fault
⋮
ライブ エディターで [グループ別に計算] タスクを開きます。停電が発生した 10 個の原因別にデータをグループ化するには、outages
を入力データとして選択し、変数 Cause
の一意の値でグループ化します。次に、[計算対象] を変数 Loss
に設定します。
[グループ別に計算] タスクでは、グループに対して 3 種類の計算を実行できます。停電データを変換するには、計算タイプを [グループごとの変換] に設定します。次に、欠損している電力損失値を埋めるには、[グループごとの計算] を [グループ平均で欠損を埋める] メソッドに設定します。
結果の timetable には、欠損している電力損失を原因が同じ停電の平均電力損失に置き換えた停電データが含まれます。
outageTransform=1468×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
____________________ _________ ______ __________ ____________________ _______________
01-Feb-2002 12:18:00 SouthWest 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm
23-Jan-2003 00:49:00 SouthEast 530.14 2.1204e+05 NaT winter storm
07-Feb-2003 21:15:00 SouthEast 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm
06-Apr-2004 05:44:00 West 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault
16-Mar-2002 06:18:00 MidWest 186.44 2.1275e+05 18-Mar-2002 23:23:00 severe storm
18-Jun-2003 02:49:00 West 0 0 18-Jun-2003 10:54:00 attack
20-Jun-2004 14:39:00 West 231.29 NaN 20-Jun-2004 19:16:00 equipment fault
06-Jun-2002 19:28:00 West 311.86 NaN 07-Jun-2002 00:51:00 equipment fault
16-Jul-2003 16:23:00 NorthEast 239.93 49434 17-Jul-2003 01:12:00 fire
27-Sep-2004 11:09:00 MidWest 286.72 66104 27-Sep-2004 16:37:00 equipment fault
05-Sep-2004 17:48:00 SouthEast 73.387 36073 05-Sep-2004 20:46:00 equipment fault
21-May-2004 21:45:00 West 159.99 NaN 22-May-2004 04:23:00 equipment fault
01-Sep-2002 18:22:00 SouthEast 95.917 36759 01-Sep-2002 19:12:00 severe storm
27-Sep-2003 07:32:00 SouthEast 697.41 3.5517e+05 04-Oct-2003 07:02:00 severe storm
12-Nov-2003 06:12:00 West 254.09 9.2429e+05 17-Nov-2003 02:04:00 winter storm
18-Sep-2004 05:54:00 NorthEast 0 0 NaT equipment fault
⋮
グループによるフィルター処理
[グループ別に計算] を使用してデータを対話的にグループ化し、演算の対象とする変数を指定してグループ フィルターを適用することで、データ セット内の特定の情報に焦点を当てます。
サンプル ファイル outages.csv
を使用して timetable を作成します。このファイルには、電力会社の停電を表す 6 列のデータが含まれています。列方向の変数 Region
および Cause
を categorical 配列に変換して、timetable を表示します。
outages = readtimetable("outages.csv");
outages.Region = categorical(outages.Region);
outages.Cause = categorical(outages.Cause)
outages=1468×5 timetable
OutageTime Region Loss Customers RestorationTime Cause
____________________ _________ ______ __________ ____________________ _______________
01-Feb-2002 12:18:00 SouthWest 458.98 1.8202e+06 07-Feb-2002 16:50:00 winter storm
23-Jan-2003 00:49:00 SouthEast 530.14 2.1204e+05 NaT winter storm
07-Feb-2003 21:15:00 SouthEast 289.4 1.4294e+05 17-Feb-2003 08:14:00 winter storm
06-Apr-2004 05:44:00 West 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault
16-Mar-2002 06:18:00 MidWest 186.44 2.1275e+05 18-Mar-2002 23:23:00 severe storm
18-Jun-2003 02:49:00 West 0 0 18-Jun-2003 10:54:00 attack
20-Jun-2004 14:39:00 West 231.29 NaN 20-Jun-2004 19:16:00 equipment fault
06-Jun-2002 19:28:00 West 311.86 NaN 07-Jun-2002 00:51:00 equipment fault
16-Jul-2003 16:23:00 NorthEast 239.93 49434 17-Jul-2003 01:12:00 fire
27-Sep-2004 11:09:00 MidWest 286.72 66104 27-Sep-2004 16:37:00 equipment fault
05-Sep-2004 17:48:00 SouthEast 73.387 36073 05-Sep-2004 20:46:00 equipment fault
21-May-2004 21:45:00 West 159.99 NaN 22-May-2004 04:23:00 equipment fault
01-Sep-2002 18:22:00 SouthEast 95.917 36759 01-Sep-2002 19:12:00 severe storm
27-Sep-2003 07:32:00 SouthEast NaN 3.5517e+05 04-Oct-2003 07:02:00 severe storm
12-Nov-2003 06:12:00 West 254.09 9.2429e+05 17-Nov-2003 02:04:00 winter storm
18-Sep-2004 05:54:00 NorthEast 0 0 NaT equipment fault
⋮
ライブ エディターで [グループ別に計算] タスクを開きます。停電が発生した年と地域別にデータをグループ化するには、[グループ化] を使用して変数 OutageTime
を年別にビン化し、変数 Region
を一意の値でグループ化します。次に、[計算対象] フィールドで変数 Loss
を選択して電力損失に対して計算を行います。
[グループ別に計算] タスクでは、グループに対して 3 種類の計算を実行できます。停電データをフィルター処理するには、計算タイプを [グループ別にフィルター処理] に設定します。次に、[グループごとの計算] を新しいローカル関数に設定し、保持する外れ値データについては true、除外する非外れ値データについては false の結果を示す関数を記述してフィルターをカスタマイズします。
結果の timetable には、電力損失が年と地域における損失の平均値から標準偏差の 3 倍を超えて離れている外れ値の停電データのみが含まれます。
outageFilter=159×6 timetable
OutageTime Region Loss Customers RestorationTime Cause year_OutageTime
____________________ _________ ______ __________ ____________________ _______________ _______________
06-Apr-2004 05:44:00 West 434.81 3.4037e+05 06-Apr-2004 06:10:00 equipment fault 2004
06-Jun-2002 19:28:00 West 311.86 NaN 07-Jun-2002 00:51:00 equipment fault 2002
08-Mar-2005 16:37:00 SouthEast 1339.2 4.3003e+05 10-Mar-2005 20:42:00 winter storm 2005
02-Jul-2004 09:16:00 MidWest 15128 2.0104e+05 06-Jul-2004 14:11:00 thunder storm 2004
20-Apr-2002 16:46:00 MidWest 23141 NaN NaT unknown 2002
10-Dec-2002 10:45:00 MidWest 14493 3.0879e+06 11-Dec-2002 18:06:00 unknown 2002
18-May-2002 11:04:00 MidWest 1389.1 1.3447e+05 21-May-2002 01:22:00 unknown 2002
22-Sep-2003 00:53:00 MidWest 3995.8 6.7808e+05 23-Sep-2003 03:45:00 unknown 2003
05-Nov-2005 12:46:00 NorthEast 2966.1 NaN 06-Nov-2005 21:40:00 unknown 2005
17-Aug-2002 09:05:00 NorthEast 21673 NaN 19-Aug-2002 21:45:00 unknown 2002
16-Sep-2004 19:42:00 NorthEast 4718 NaN NaT unknown 2004
20-May-2002 10:57:00 NorthEast 9116.6 2.4983e+06 21-May-2002 15:22:00 unknown 2002
05-Sep-2003 20:15:00 SouthEast 1700.1 1.6393e+05 10-Sep-2003 19:59:00 thunder storm 2003
20-Sep-2004 12:37:00 SouthEast 8767.3 2.2249e+06 02-Oct-2004 06:00:00 severe storm 2004
14-Sep-2005 15:45:00 SouthEast 1839.2 3.4144e+05 NaT severe storm 2005
14-Sep-2003 16:09:00 NorthEast 2011.3 6.9368e+05 24-Sep-2003 07:44:00 severe storm 2003
⋮
function tf = myFilterFcn(x) % x is the data in a group from one computation variable % tf is true, false, or a logical column vector with the same height as x tf = isoutlier(x); end
関連する例
パラメーター
入力データ
— ワークスペースからの有効なグループ化データ
ベクトル | 行列 | table | timetable
[グループ化] ドロップダウン リストから有効なワークスペース グループ化変数を選択してグループを指定します。データが table または timetable に含まれている場合は、グループ化の基準とする table 変数も選択します。一意の値でグループ化するか、データをビン化する方法を指定できます。
[計算対象] ドロップダウン リストから、計算対象とするワークスペース データを選択します。データが table または timetable に含まれている場合は、計算対象とする table 変数を選択します。
グループの計算
— 実行する計算のタイプ
Compute stats by group
| Transform by group
| Filter by group
次の計算オプションのいずれかを選択します。
計算タイプ | 説明 |
---|---|
Compute stats by group | 平均値や最大値などのデータの要約 (または集計)。ローカル関数名または関数ハンドルを指定することでカスタム関数も指定できます。この関数は、最初の次元の長さが 1 であるグループごとに 1 つのエンティティを返さなければなりません。詳細については、groupsummary を参照してください。 |
Transform by group | データを変換します。たとえば、データを 2 ノルムでスケーリングしたり、欠損データを埋めたりします。ローカル関数名または関数ハンドルを指定することでカスタム関数も指定できます。この関数は、最初の次元の長さが 1、または入力データと同じ行数をもつ 1 つのエンティティを返さなければなりません。詳細については、grouptransform を参照してください。 |
Filter by group | フィルター処理計算を定義するローカル関数または関数ハンドルを指定して、各グループからメンバーをフィルター処理します。この関数は、logical スカラーを返すか、データと同じ行数をもち、選択するグループ メンバーを示す logical 列ベクトルを返さなければなりません。関数が logical スカラーを返す場合、グループのすべてのメンバーがフィルター処理されるか (値が false のとき)、何も処理されません (値が true のとき)。関数が logical ベクトルを返す場合、対応する要素が false であるグループ メンバーがフィルター処理されます。対応する要素が true であるメンバーが保持されます。詳細については、groupfilter を参照してください。 |
どの計算タイプでも、[新規] をクリックすると、ライブ スクリプトで計算を定義する新しい関数を作成できます。[新規] をクリックすると、選択した計算タイプに適した構文を使用するサンプル関数がライブ スクリプトに自動的に挿入されます。サンプル関数の名前を変更する場合、新しい関数名を使用するには、ライブ タスクのドロップダウン リストからメソッドを再度選択します。
バージョン履歴
R2021b で導入R2023a: 一意の要素の数を返す
データの各グループの異なる非欠損要素の数を計算します。[グループ別に統計値を計算] を選択してから、[一意の値の数] または [すべて選択] 計算メソッドを指定します。
R2022a: 入力に 100 万個を超える行がある場合、ライブ エディター タスクは自動実行されない
入力に 100 万個を超える行がある場合、このライブ エディター タスクは自動実行されません。以前のリリースでは、入力がどのようなサイズでもタスクは必ず自動実行されていました。入力の行が多い場合、このタスクで生成されたコードは実行にかなりの時間 (数秒間以上) を要することがあります。
タスクが自動的に実行されない場合、自動実行インジケーターが無効になります。必要に応じてタスクを手動で実行するか、タスクの自動実行の有効化を選択することができます。
参考
関数
ライブ エディター タスク
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)