このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
stack
入力 table または timetable のデータを出力 table または timetable の 1 つの変数にスタック
説明
は、入力 table または timetable S = stack(U,vars)U をスタックされた table または timetable S に変換します。この関数は、U の複数の変数の値を S の 1 つの変数にスタックします。入力引数 vars は、スタックする U の変数を名前または U における位置のいずれかで指定します。
U の行数が n 個であり、vars で U の変数を m 個指定した場合、S は m*n 行になります。関数 stack は、指定された U の変数の値をインターリーブして S に 1 つの変数を作成します。たとえば、U が 10 行の場合、U の 3 つの変数をスタックすると、S は 30 行になります。一般に、S は U よりも少ない変数を含みますが、より多くの行を含みます。
出力 table または timetable S には、S の各行のスタック データが U のどの変数を元にしているかを示す新しい categorical 変数が含まれます。関数 stack は、スタックされない U の変数についてはデータを複製します。
Uが table の場合、行名はスタックできません。Uが timetable の場合、行時間はスタックできません。
は S = stack(U,{vars1,...,varsN}){vars1,...,varsN} で指定した変数の値を S の変数 N にスタックします。詳細については、出力での複数のスタックされた変数の作成を参照してください。
は、1 つ以上の名前と値の引数で指定された追加オプションを使用して、table S = stack(___,Name,Value)U を変換します。
たとえば、S の新しいスタックされた変数の変数名を指定できます。
例
テストの得点を含むテーブルを 3 つの別々のテストから作成します。table はスタック解除された形式です。
Test1 = [93;57;87;89]; Test2 = [89;77;92;86]; Test3 = [95;62;89;91]; U = table(Test1,Test2,Test3)
U=4×3 table
Test1 Test2 Test3
_____ _____ _____
93 89 95
57 77 62
87 92 89
89 86 91
このテーブルは 4 つの列と 3 つの変数で構成されています。
テストの得点を 1 つの変数にスタックします。
S = stack(U,1:3)
S=12×2 table
Test1_Test2_Test3_Indicator Test1_Test2_Test3
___________________________ _________________
Test1 93
Test2 89
Test3 95
Test1 57
Test2 77
Test3 62
Test1 87
Test2 92
Test3 89
Test1 89
Test2 86
Test3 91
S は 12 個の行と 2 つの変数で構成されています。S はスタックされた形式です。
categorical 変数 Test1_Test2_Test3_Indicator は、スタックされたデータ変数 Test1_Test2_Test3 の得点に対応するテストを特定します。
5 つの異なる荒天から 3 つの都市の降雪量を示す timetable を作成します。datetime 値として荒天の日付を指定し、それらを timetable U の行時間として使用します。この timetable には荒天番号の固定セットがあるため、荒天番号 Storm の配列を categorical 配列として指定します。
Storm = categorical([1;2;3;4;5]);
Date = datetime({'2011-12-25';'2012-01-02';'2012-01-23';'2012-02-07';'2012-02-15'});
Natick = [20;5;13;0;17];
Boston = [18;9;21;5;12];
Worcester = [26;10;16;3;15];
U = timetable(Date,Storm,Natick,Boston,Worcester)U=5×4 timetable
Date Storm Natick Boston Worcester
___________ _____ ______ ______ _________
25-Dec-2011 1 20 18 26
02-Jan-2012 2 5 9 10
23-Jan-2012 3 13 21 16
07-Feb-2012 4 0 5 3
15-Feb-2012 5 17 12 15
変数 Storm と Date には、各地点の連続したデータが含まれます。
変数 Natick、Boston および Worcester を 1 つの変数にスタックします。スタック データ Snowfall を含む変数と、新しい指標変数 Town に名前を付けます。
S = stack(U,{'Natick','Boston','Worcester'},...
'NewDataVariableName','Snowfall',...
'IndexVariableName','Town')S=15×3 timetable
Date Storm Town Snowfall
___________ _____ _________ ________
25-Dec-2011 1 Natick 20
25-Dec-2011 1 Boston 18
25-Dec-2011 1 Worcester 26
02-Jan-2012 2 Natick 5
02-Jan-2012 2 Boston 9
02-Jan-2012 2 Worcester 10
23-Jan-2012 3 Natick 13
23-Jan-2012 3 Boston 21
23-Jan-2012 3 Worcester 16
07-Feb-2012 4 Natick 0
07-Feb-2012 4 Boston 5
07-Feb-2012 4 Worcester 3
15-Feb-2012 5 Natick 17
15-Feb-2012 5 Boston 12
15-Feb-2012 5 Worcester 15
S には各荒天に対して 3 つの行があり、それに対して、stack が定数変数 Storm および Date のデータを繰り返します。
categorical 変数 Town は、U のどの変数に対応する Snowfall データが含まれるかを特定します。
米国東海岸のインフルエンザ推定羅患率を含む timetable を作成します。米国北東部、中部大西洋岸および南部大西洋岸に対して別々の変数を作成します。データ ソース: Google Flu Trends プロジェクト (現在は運用終了)。timetable の行時間として datetime 配列を使用します。
Month = datetime(2005,10,1,'Format','MMMM yyyy') + calmonths(0:5); Month = Month'; NE = [1.1902; 1.3610; 1.5003; 1.7772; 2.1350; 2.2345]; MidAtl = [1.1865; 1.4120; 1.6043; 1.8830; 2.1227; 1.9920]; SAtl = [1.2730; 1.5820; 1.8625; 1.9540; 2.4803; 2.0203]; fluU = timetable(Month,NE,MidAtl,SAtl)
fluU=6×3 timetable
Month NE MidAtl SAtl
_____________ ______ ______ ______
October 2005 1.1902 1.1865 1.273
November 2005 1.361 1.412 1.582
December 2005 1.5003 1.6043 1.8625
January 2006 1.7772 1.883 1.954
February 2006 2.135 2.1227 2.4803
March 2006 2.2345 1.992 2.0203
変数 Month には、行全体にわたる定数であるデータが含まれます。
変数 NE、MidAtl および SAtl を、FluRate という 1 つの変数にスタックします。新しい指標変数に Region という名前を付け、インデックス ベクトル ifluU を出力して、入力するスタック解除 table fluU の行と、出力するスタック table fluS の行の対応関係を示します。
[fluS,ifluU] = stack(fluU,1:3,... 'NewDataVariableName','FluRate',... 'IndexVariableName','Region')
fluS=18×2 timetable
Month Region FluRate
_____________ ______ _______
October 2005 NE 1.1902
October 2005 MidAtl 1.1865
October 2005 SAtl 1.273
November 2005 NE 1.361
November 2005 MidAtl 1.412
November 2005 SAtl 1.582
December 2005 NE 1.5003
December 2005 MidAtl 1.6043
December 2005 SAtl 1.8625
January 2006 NE 1.7772
January 2006 MidAtl 1.883
January 2006 SAtl 1.954
February 2006 NE 2.135
February 2006 MidAtl 2.1227
February 2006 SAtl 2.4803
March 2006 NE 2.2345
⋮
ifluU = 18×1
1
1
1
2
2
2
3
3
3
4
⋮
ifluU(5) は 2 となります。出力 table fluS の 5 行目に、入力 table fluU の 2 行目のデータが含まれます。
入力引数
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。
例: 'NewDataVariableName','StackedData' は、新しいデータ変数 StackedData に名前を付けます。
出力に含める vars 以外の変数。'ConstantVariables' と、正の整数、正の整数のベクトル、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern スカラー、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。stack は、行のスタックされた各エントリについて、定数変数からデータを複製します。
既定の設定では、vars で指定されていない、U の変数をすべて使用します。名前と値のペアの引数 'ConstantVariables' を指定して、vars または 'ConstantVariables' で指定されていない変数を出力テーブル S から除外することができます。
U は最初の次元に沿った行ラベルをもつことができます。U が table の場合は、行名をラベルとしてもつことができます。U が timetable の場合、行時間をラベルとしてもたなければなりません。
'ConstantVariables'の値を指定する場合、行名または行時間を含めることができます。stackは行名または行時間を複製します。これは行名や行時間が'ConstantVariables'に含まれていない場合でも同様です。
S の新しいデータ変数の名前。'NewDataVariableName' と文字ベクトル、string 配列、または文字ベクトルの cell 配列で構成されるコンマ区切りのペアとして指定します。既定の設定では、スタックされた U からの変数の名前の連結です。
S の新しい指標変数の名前。'IndexVariableName' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。既定値は NewDataVariableName に基づいた名前です。
出力引数
スタック テーブル。table または timetable として返されます。S にはスタックされたデータ変数、カテゴリカル指標変数および任意の定数変数をもつ変数が含まれます。
S には、説明、変数単位、変数名、行名などの追加のメタデータを格納できます。詳細については、table または timetable のプロパティの節を参照してください。
stack は、vars でリストされた最初の変数の変数単位および変数の説明のプロパティ値を、対応する新しいデータ変数の S.Properties.VariableUnits および S.Properties.VariableDescrisciptions の値に割り当てます。
U のインデックス。列ベクトルとして返されます。インデックス ベクトル iu は、対応するデータを含む入力 table U の行を特定します。stack は、U(iu(j),vars) を使用して、出力 table S の j 番目の行を作成します。
アルゴリズム
入力の値を出力の複数の変数にスタックすることが可能です。
Sにスタックされた変数を複数作成するには、cell 配列を使用してUの変数のグループを複数指定します。varsで複数の値を含める場合は cell 配列を使用し、名前と値のペアの引数'NewDataVariableName'で複数の値を含める場合は文字ベクトルの cell 配列または string 配列を使用できます。すべてのグループは同数の変数を含まなければなりません。たとえば、
Uに 4 つの変数が含まれている場合、次の構文を使用して、Sにスタックされた変数を 1 つだけでなく 2 つ作成できます。vars = {[1 2],[3 4]}; S = stack(U,vars)この結果、
Sには、Uの 1 番目と 2 番目の変数の値をもつスタックされた変数とUの 3 番目と 4 番目の変数の値をもつスタックされた変数が含まれます。Sの新しい変数の名前を指定するには、'NewDataVariableName'を使用します。指定する名前の数は、varsで指定するグループの数と等しくなければなりません。vars = {[1 2],[3 4]}; S = stack(U,vars,'NewDataVariableName',{'Vars1And2','Vars3And4'})varsを文字ベクトルの cell 配列として指定すると、Sには 1 つのスタックされた変数が格納されます。変数名を使用する場合に複数のスタックされた変数を指定するには、文字ベクトルの cell 配列の cell 配列、または string 配列の cell 配列を使用します。たとえば、
UがVar1、Var2、Var3、およびVar4という名前の変数を含む table である場合、次の構文はSに 1 つのスタックされた変数を作成します。S = stack(U,{'Var1','Var2','Var3','Var4'})次の構文は
Sに 2 つのスタックされた変数を作成します。S = stack(U,{{'Var1','Var2'} {'Var3','Var4'}})
拡張機能
stack 関数は tall 配列を完全にサポートしています。詳細については、tall 配列を参照してください。
使用上の注意および制限:
2 番目の入力引数
varsは定数でなければなりません。名前と値の引数
'ConstantVariables'、'NewDataVariableName'、および'IndexVariableName'の値は定数でなければなりません。入力引数
varsと名前と値の引数'ConstantVariables'の値は、パターン式をサポートしません。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2013b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)