このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
grouptransform
グループごとの変換
構文
説明
は、名前と値の引数を 1 つ以上使用して、追加のグループ化プロパティを指定します。たとえば、G
= grouptransform(___,Name,Value
)G = grouptransform(T,'Temp','linearfill','ReplaceValues',false)
は、非グループ化変数を置き換えず、埋め込みデータを T
の追加変数として追加します。
は、前述の配列構文のいずれかについて、名前と値の引数を 1 つ以上使用して、追加のグループ化プロパティを指定します。B
= grouptransform(___,Name,Value
)
例
グループ別に欠損データを埋める
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
ベクトル データによるグループ操作
日付のベクトルと、対応する利益額のベクトルを作成します。
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]';
曜日別にグループ化し、利益額を 2 ノルムで正規化します。変換後のデータと、それに対応するグループを表示します。
[normDailyProfit,dayOfWeek] = grouptransform(profit,timeStamps,'dayname','norm')
normDailyProfit = 10×1
0.4207
1.0000
0.7934
0.6658
0.6065
0.7461
0.6443
0.6086
0.7951
0.6387
dayOfWeek = 10x1 categorical
Saturday
Thursday
Wednesday
Friday
Tuesday
Friday
Saturday
Wednesday
Tuesday
Saturday
入力引数
T
— 入力データ
table | timetable
入力データ。table または timetable として指定します。
A
— 入力配列
ベクトル | 行列
入力配列。ベクトルまたは行列として指定します。
groupvars
— グループ化変数またはベクトル
スカラー | ベクトル | 行列 | cell 配列 | 関数ハンドル | table vartype
添字
グループ化変数またはベクトル。次のオプションのいずれかとして指定します。
配列入力の場合、
groupvars
はA
と同じ行数をもつ列ベクトルか、行列内あるいは cell 配列内に配置した列ベクトルのグループのいずれかにすることができます。入力データが table または timetable の場合、
groupvars
はデータ内のグループの計算にどの変数を使用するかを表します。グループ化変数は、次の表のオプションのいずれかを使用して指定できます。オプション 説明 例 変数名 単一の table 変数名を指定する文字ベクトルまたはスカラー string
'Var1'
"Var1"
変数名のベクトル 各要素が table 変数名である、文字ベクトルの cell 配列または string 配列
{'Var1' 'Var2'}
["Var1" "Var2"]
変数インデックスのスカラーまたはベクトル table 変数インデックスのスカラーまたはベクトル
1
[1 3 5]
logical ベクトル 各要素が table 変数に対応する logical ベクトル。
true
の場合は対応する変数を含めて、false
の場合は対応する変数を除外します。[true false true]
関数ハンドル 入力として table 変数をとり、logical スカラーを返す関数ハンドル
@isnumeric
vartype
添字関数
vartype
によって生成される table の添字vartype('numeric')
例: grouptransform(T,"Var3",method)
method
— 計算方法
'zscore'
| 'norm'
| 'meancenter'
| 'rescale'
| 'meanfill'
| 'linearfill'
| 関数ハンドル
計算方法。次の値のいずれかとして指定します。
方法 | 説明 |
---|---|
| 平均が 0、標準偏差が 1 となるようにデータを正規化 |
| 2 ノルムでデータを正規化 |
| 平均が 0 となるようにデータを正規化 |
| 範囲を [0,1] に再スケーリング |
| グループ データの平均値で欠損値を埋める |
| 欠損していないグループ データの線形内挿で欠損値を埋める |
最初の次元の長さが 1、または入力データと同じ行数をもつ 1 つのエンティティを返す関数ハンドルも指定できます。関数が、最初の次元の長さが 1 のエンティティを返す場合、grouptransform
はその値を繰り返して、出力と入力の行数を同じにします。
データ型: char
| string
| function_handle
datavars
— 演算の対象とする table 変数
スカラー | ベクトル | cell 配列 | 関数ハンドル | table vartype
添字
演算の対象とする table 変数。次の表のオプションのいずれかとして指定します。datavars
は、メソッドを適用する入力 table または timetable の変数を示します。datavars
で指定されていない table 内のその他の変数は、演算されずに出力に渡されます。datavars
が指定されない場合、grouptransform
はそれぞれの非グループ化変数を処理します。
オプション | 説明 | 例 |
---|---|---|
変数名 | 単一の table 変数名を指定する文字ベクトルまたはスカラー string |
|
変数名のベクトル | 各要素が table 変数名である、文字ベクトルの cell 配列または string 配列 |
|
変数インデックスのスカラーまたはベクトル | table 変数インデックスのスカラーまたはベクトル |
|
logical ベクトル | 各要素が table 変数に対応する logical ベクトル。 |
|
関数ハンドル | 入力として table 変数をとり、logical スカラーを返す関数ハンドル |
|
vartype 添字 | 関数 |
|
例: grouptransform(T,groupvars,method,["Var1" "Var2" "Var4"])
groupbins
— ビン化スキーム
'none'
(既定値) | 文字ベクトル | スカラー | ベクトル | cell 配列
ビン化スキーム。次のいずれかのオプションとして指定します。
ビン化しないことを示す
'none'
数値ベクトルまたは
datetime
ベクトル (datetime
グループ化変数の場合) として指定されるビン エッジのリスト整数値スカラーとして指定されるビン数
ビンの幅を示す
duration
型またはcalendarDuration
型のスカラーとして指定される時間範囲 (datetime
またはduration
グループ化変数の場合のみ)各グループ化変数のビン化ルールをリストする cell 配列
次のいずれかの文字ベクトルとして指定される時間ビン (
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
のみ
複数のグループ化変数を指定する場合、すべてのグループ化変数に適用される 1 つのビン化ルールを指定するか、グループ化変数ごとのビン化メソッドが格納された cell 配列 ({'none',[0 2 4 Inf]}
など) を指定することができます。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: G = grouptransform(T,groupvars,groupbins,'zscore','IncludedEdge','right')
IncludedEdge
— 含めるビン エッジ
'left'
(既定値) | 'right'
含めるビン エッジ。'left'
または 'right'
のいずれかとして指定し、ビン区間のどちらの端が含まれるかを示します。
この名前と値の引数は groupbins
が指定されている場合にのみ指定できます。この値は、すべてのグループ化変数またはベクトルで、すべてのビン化スキームに適用されます。
ReplaceValues
— 変換配置インジケーター
true
または 1
(既定値) | false
または 0
変換配置インジケーター。数値または logical 1
(true
) または 0
(false
) として指定します。パラメーター値が true
の場合、grouptransform
は入力からの非グループ化変数またはベクトルの代わりに変換後のデータを含む、table または配列を出力します。パラメーター値が false
の場合、grouptransform
は変換後のデータを行列の追加の列または table 変数として入力データに追加します。
出力引数
G
— 出力テーブル
table | timetable
出力 table。各グループの変換後のデータを含む table または timetable として返されます。
B
— 出力配列
ベクトル | 行列
出力配列。変換後のデータを含むベクトルまたは行列として返されます。
BG
— グループ化ベクトル
列ベクトル | 列ベクトルの cell 配列
配列の入力データのグループ化ベクトル。列ベクトルまたは列ベクトルの cell 配列として返されます。
ヒント
grouptransform
を何度も呼び出す場合、可能であればパフォーマンス向上のためグループ変数をcategorical
型またはlogical
型に変換することを検討してください。たとえば、char
型のグループ化変数 (要素が'Male'
と'Female'
であるGender
など) がある場合、categorical(Gender)
コマンドを使用してこれを categorical 値に変換することができます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
使用上の注意事項および制限事項:
A
とgroupvars
が両方とも tall 行列の場合、その行数は同じでなければなりません。最初の入力が tall 行列の場合、
groupvars
を tall グループ化ベクトルを含む cell 配列にすることができます。引数
groupvars
と引数datavars
は関数ハンドルをサポートしていません。引数
method
が関数ハンドルの場合は、tall 配列を扱うsplitapply
の有効な入力でなければなりません。離散化された datetime 配列によってグループ化する場合、カテゴリのグループ名はインメモリ
grouptransform
計算と比べ異なっています。
詳細については、tall 配列を参照してください。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2018b で導入R2022a: グループ サイズが小さい場合のパフォーマンスが向上
関数 grouptransform
は、特に各グループのデータ数が少ない場合に、パフォーマンスが向上しています。
参考
groupsummary
| groupfilter
| groupcounts
| 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)