Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

グループ別に計算

ライブ エディターでのグループごとの要約、変換、またはフィルター処理

R2021b 以降

説明

[グループ別に計算] タスクでは、データを対話的にグループ化して、グループごとに要約統計量を計算したり変換を実行したりフィルターを適用したりできます。このタスクは、ライブ スクリプト用の MATLAB® コードを自動生成します。

このタスクを使用すると、次を行うことができます。

  • 配列、table、または timetable 内のデータのグループを定義する。

  • 各グループ化に基づいてデータの要約、変換、またはフィルター処理を行う。

  • 計算の結果を含む新しい table または timetable を出力する。

Compute by Group task in the Live Editor

タスクを開く

[グループ別に計算] タスクを 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 には、各地域での停電に関するグループの観測値の数、平均電力損失、最大電力損失、影響を受けた顧客の平均数、影響を受けた顧客の最大数が含まれます。

Live Task
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 には、欠損している電力損失を原因が同じ停電の平均電力損失に置き換えた停電データが含まれます。

Live Task
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 倍を超えて離れている外れ値の停電データのみが含まれます。

Live Task
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 変数も選択します。一意の値でグループ化するか、データをビン化する方法を指定できます。

[計算対象] ドロップダウン リストから、計算対象とするワークスペース データを選択します。データが table または timetable に含まれている場合は、計算対象とする table 変数を選択します。

次の計算オプションのいずれかを選択します。

計算タイプ説明
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 で導入

すべて展開する