ドキュメンテーション

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

grouptransform

グループごとの変換

構文

G = grouptransform(T,groupvars,method)
G = grouptransform(T,groupvars,groupbins,method)
G = grouptransform(___,datavars)
G = grouptransform(___,Name,Value)

説明

G = grouptransform(T,groupvars,method) は、method の計算を使用して table または timetable のデータを変換し、groupvars で指定された変数を基準にグループ化します。出力 G は table または timetable で、T の非グループ化変数の代わりに変換後のデータが含まれます。たとえば、G = grouptransform(T,'Gender','norm') は 2 ノルムを使用して、T のデータを性別を基準として正規化します。

G = grouptransform(T,groupvars,groupbins,method)groupbins に従って変換後のデータをビン化し、グループを出力 table の末尾に追加変数として配置します。たとえば、G = grouptransform(T,'SaleDate','year','rescale')T のデータを [0,1] の範囲でスケーリングし、販売年を基準にビン化します。

G = grouptransform(___,datavars)datavars の変数のうち変換するものを指定します。

G = grouptransform(___,Name,Value) は、名前と値のペアを 1 つ以上使用して、追加のグループ化プロパティを指定します。たとえば、G = grouptransform(T,'Temp','linearfill','ReplaceValues',false) は、非グループ化変数を置き換えず、埋め込みデータを T の末尾に追加します。

すべて折りたたむ

3 チームの進捗ステータスが含まれる timetable を作成します。

timeStamp = days([1;1;1;2;2;2;3;3;3]);
teamNumber = [1;2;3;1;2;3;1;2;3];
percentComplete = [14.2;28.1;11.5;NaN;NaN;19.3;46.1;51.2;30.3];
T = timetable(timeStamp,teamNumber,percentComplete)
T=9×2 timetable
    timeStamp    teamNumber    percentComplete
    _________    __________    _______________

    1 day            1              14.2      
    1 day            2              28.1      
    1 day            3              11.5      
    2 days           1               NaN      
    2 days           2               NaN      
    2 days           3              19.3      
    3 days           1              46.1      
    3 days           2              51.2      
    3 days           3              30.3      

線形内挿を使用して、各グループの欠損したステータスのパーセンテージ (NaN) を埋めます。

G = grouptransform(T,'teamNumber','linearfill','percentComplete')
G=9×2 timetable
    timeStamp    teamNumber    percentComplete
    _________    __________    _______________

    1 day            1               14.2     
    1 day            2               28.1     
    1 day            3               11.5     
    2 days           1              30.15     
    2 days           2              39.65     
    2 days           3               19.3     
    3 days           1               46.1     
    3 days           2               51.2     
    3 days           3               30.3     

変数 percentComplete を置き換えずに元の table に埋め込みデータを追加するには、'ReplaceValues' パラメーターを使用します。

Gappend = grouptransform(T,'teamNumber','linearfill','percentComplete','ReplaceValues',false)
Gappend=9×3 timetable
    timeStamp    teamNumber    percentComplete    linearfill_percentComplete
    _________    __________    _______________    __________________________

    1 day            1              14.2                     14.2           
    1 day            2              28.1                     28.1           
    1 day            3              11.5                     11.5           
    2 days           1               NaN                    30.15           
    2 days           2               NaN                    39.65           
    2 days           3              19.3                     19.3           
    3 days           1              46.1                     46.1           
    3 days           2              51.2                     51.2           
    3 days           3              30.3                     30.3           

日付と、それに対応する利益の table を作成します。

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]';
T = table(timeStamps,profit)
T=10×2 table
    timeStamps     profit
    ___________    ______

    04-Mar-2017     2032 
    02-Mar-2017     3071 
    15-Mar-2017     1185 
    10-Mar-2017     2587 
    14-Mar-2017     1998 
    31-Mar-2017     2899 
    25-Mar-2017     3112 
    29-Mar-2017      909 
    21-Mar-2017     2619 
    18-Mar-2017     3085 

曜日別にグループ化し、利益を 2 ノルムで正規化します。

G = grouptransform(T,'timeStamps','dayname','norm')
G=10×3 table
    timeStamps     profit     dayname_timeStamps
    ___________    _______    __________________

    04-Mar-2017    0.42069        Saturday      
    02-Mar-2017          1        Thursday      
    15-Mar-2017    0.79344        Wednesday     
    10-Mar-2017    0.66582        Friday        
    14-Mar-2017    0.60654        Tuesday       
    31-Mar-2017    0.74612        Friday        
    25-Mar-2017    0.64428        Saturday      
    29-Mar-2017    0.60864        Wednesday     
    21-Mar-2017    0.79506        Tuesday       
    18-Mar-2017    0.63869        Saturday      

入力引数

すべて折りたたむ

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

グループ化変数。スカラー、ベクトル、行列、cell 配列、関数ハンドルとして指定します。groupvars はグループの計算に使用する入力テーブルの列を示し、次のいずれかになります。

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

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

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

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

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

例: 'Age'

例: {'Height','Weight'}

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

方法

説明

'zscore'

平均が 0、標準偏差が 1 となるようにデータを正規化

'norm'

2 ノルムでデータを正規化

'meancenter'

平均が 0 となるようにデータを正規化

'rescale'

範囲を [0,1] に再スケーリング

'meanfill'

グループ データの平均値で欠損値を埋める

'linearfill'

欠損していないグループ データの線形内挿で欠損値を埋める

スカラー、または入力データと同じ行数の列ベクトルを返す関数ハンドルを指定することもできます。この関数がスカラーを返す場合、grouptransform は変換後の出力の要素ごとにそのスカラーを繰り返します。

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

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

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

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

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

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

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

例: '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 = grouptransform(T,groupvars,groupbins,'zscore','IncludedEdge','right')

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

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

変換配置インジケーター。true または false として指定します。パラメーター値が true の場合、grouptransform は入力からの非グループ化変数の代わりに変換計算を使用する table を出力します。パラメーター値が false の場合、grouptransform は計算を入力の末尾に追加し、元の table または timetable 変数を保持します。

データ型: logical

ヒント

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

R2018b で導入