ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

stack

複数変数のデータを単一変数にスタック

構文

  • T = stack(W,vars)
  • T = stack(W,vars,Name,Value)
  • [T,iw] = stack(___)

説明

T = stack(W,vars) は、横長のテーブル W を等価な縦長のテーブル T に変換します。stack は、vars で指定される W からの複数の変数を、T の単一変数にスタックします。一般に、TW よりも変数は少なく、行は多く含みます。

出力テーブル T には、各行のスタック データが W 内のどの変数を元にしているかを示す新しいカテゴリカル変数が含まれています。stack は、スタックされていない W の変数からデータを複製します。

T = stack(W,vars,Name,Value) は、1 つまたは複数の Name,Value のペアの引数で指定された追加オプションを使用して、テーブル W を縦長に変換します。

たとえば、W の新しい変数とスタックされる変数の変数名を指定できます。

[T,iw] = stack(___) は、T の行と W の行の間の対応を示すインデックス ベクトル iw も返します。前の入力引数のいずれも使用できます。

すべて展開する

3 つの変数を 1 つにスタック

テストの得点を含むテーブルを 3 つの別々のテストから作成します。

Test1 = [93;57;87;89];
Test2 = [89;77;92;86];
Test3 = [95;62;89;91];

W = table(Test1,Test2,Test3)
W = 

    Test1    Test2    Test3
    _____    _____    _____

    93       89       95   
    57       77       62   
    87       92       89   
    89       86       91   

このテーブルは 4 つの列と 3 つの変数で構成されています。

テストの得点を 1 つの変数にスタックします。

T = stack(W,1:3)
T = 

    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               

T は 12 個の行と 2 つの変数で構成されています。

カテゴリカル変数 Test1_Test2_Test3_Indicator は、スタックされたデータ変数 Test1_Test2_Test3 の得点に対応するテストを特定します。

変数のスタックおよび変数名の指定

5 つの別々の嵐について 3 か所での降雪量を示すテーブルを作成します。

Storm = [1;2;3;4;5];
Date = {'12/25/11';'1/2/12';'1/23/12';'2/7/12';'2/15/12'};
Natick = [20;5;13;0;17];
Boston = [18;9;21;5;12];
Worcester = [26;10;16;3;15];

W = table(Storm,Date,Natick,Boston,Worcester)
W = 

    Storm       Date       Natick    Boston    Worcester
    _____    __________    ______    ______    _________

    1        '12/25/11'    20        18        26       
    2        '1/2/12'       5         9        10       
    3        '1/23/12'     13        21        16       
    4        '2/7/12'       0         5         3       
    5        '2/15/12'     17        12        15       

変数 StormDate には、各地点の連続したデータが含まれます。

変数 NatickBoston および Worcester を 1 つの変数にスタックします。スタック データ Snowfall を含む変数と、新しい指示変数 Town に名前を付けます。

T = stack(W,{'Natick','Boston','Worcester'},...
    'NewDataVariableName','Snowfall',...
    'IndexVariableName','Town')
T = 

    Storm       Date         Town       Snowfall
    _____    __________    _________    ________

    1        '12/25/11'    Natick       20      
    1        '12/25/11'    Boston       18      
    1        '12/25/11'    Worcester    26      
    2        '1/2/12'      Natick        5      
    2        '1/2/12'      Boston        9      
    2        '1/2/12'      Worcester    10      
    3        '1/23/12'     Natick       13      
    3        '1/23/12'     Boston       21      
    3        '1/23/12'     Worcester    16      
    4        '2/7/12'      Natick        0      
    4        '2/7/12'      Boston        5      
    4        '2/7/12'      Worcester     3      
    5        '2/15/12'     Natick       17      
    5        '2/15/12'     Boston       12      
    5        '2/15/12'     Worcester    15      

T には各暴風に対して 3 つの行があり、それに対応して、stack が連続した変数 Storm および Date のデータを繰り返します。

カテゴリカル変数 Town は、対応する Snowfall データを含む W の変数を特定します。

変数のスタックおよびインデックス ベクトルの出力

米国東海岸のインフルエンザ推定羅患率を含むテーブルを作成します。米国北東部、中部大西洋岸および南部大西洋岸に対して別々の変数を作成します。データ ソース: Google インフル トレンド (http://www.google.org/flutrends)。

Month = {'October';'November';'December';...
    'January';'February';'March'};
Year = [2005*ones(3,1); 2006*ones(3,1)];
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];

fluW = table(Month,Year,NE,MidAtl,SAtl)
fluW = 

      Month       Year      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

変数 MonthYear には、行全体に連続したデータが含まれます。

変数 NEMidAtl および SAtl を、FluRate という 1 つの変数にスタックします。新しい指示変数 Region に名前を付け、入力する横長のテーブル fluW の行と出力する縦長のテーブル fluT の行の間の対応を示すインデックス ベクトル ifluW を出力します。

[fluT,ifluW] = stack(fluW,3:5,...
    'NewDataVariableName','FluRate',...
    'IndexVariableName','Region')
fluT = 

      Month       Year    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 
    'March'       2006    MidAtl     1.992 
    'March'       2006    SAtl      2.0203 


ifluW =

     1
     1
     1
     2
     2
     2
     3
     3
     3
     4
     4
     4
     5
     5
     5
     6
     6
     6

ifluW(5) は、2 となります。出力テーブル fluT の 5 行目には、入力テーブル fluW の 2 行目のデータが含まれています。

入力引数

すべて展開する

W - 横長のテーブルテーブル

横長テーブル。テーブルとして指定します。

vars - スタックする W の変数正の整数 | 正の整数のベクトル | 変数名 | 変数名のセル配列 | 論理ベクトル

スタックする W の変数。正の整数、正の整数のベクトル、変数名、変数名のセル配列または論理ベクトルとして指定します。

名前/値のペアの引数

オプションの Name,Value 引数のペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数個の名前と値のペアの引数を、任意の順番で指定できます。

例: 'NewDataVariableName','StackedData' は、新しいデータ変数 StackedData に名前を付けます。

'ConstantVariables' - 出力に含める vars 以外の変数正の整数 | 正の整数のベクトル | 変数名 | 変数名のセル配列 | 論理ベクトル

出力に含める vars 以外の変数。'ConstantVariables' と、正の整数、正の整数のベクトル、変数名、変数名のセル配列または論理ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。stack は、行からスタックされた各エントリに対して連続したデータをもつ変数からデータを複製します。

既定の設定では、vars で指定されていない、W の変数をすべて使用します。vars または 'ConstantVariables' で指定されていない変数を、出力テーブル T から除外するように、名前と値のペアの引数 'ConstantVariables' を指定できます。

'NewDataVariableName' - T の新しいデータ変数の名前文字列

T の新しいデータ変数の名前。'NewDataVariableName' と文字列から構成されるコンマ区切りのペアとして指定します。既定の設定では、スタックされる W からの変数の名前を連結します。

'IndexVariableName' - T の新しい指示変数の名前文字列

T の新しい指示変数の名前。'IndexVariableName' と文字列から構成されるコンマ区切りのペアとして指定します。既定値は NewDataVariableName に基づいた名前です。

出力引数

すべて展開する

T - 縦長のテーブルテーブル

縦長のテーブル。テーブルとして返されます。T にはスタックされたデータ変数、カテゴリカル指示変数および任意の連続したデータをもつ変数が含まれます。

テーブルには、説明、変数単位、変数名、行名などの追加のメタデータを格納できます。詳細は、「Table Properties」を参照してください。

stack は、vars でリストされる最初の変数の変数単位および変数の説明のプロパティ値を、対応する新しいデータ変数の T.Properties.VariableUnits および T.Properties.VariableDescrisciptions の値に割り当てます。

iw - W へのインデックス列ベクトル

W へのインデックス。列ベクトルとして返されます。インデックス ベクトル iw は、対応するデータを含む入力テーブル W の行を特定します。stack は、W(iw(j),vars) を使用して、出力テーブル Tj 番目の行を作成します。

詳細

すべて展開する

ヒント

  • W のデータ変数の複数のグループを指定できます。各グループは T のスタックされたデータ変数になります。vars の複数の値を含める場合はセル配列を使用し、名前と値のペアの引数 'NewDataVariableName' の複数の値を含める場合は文字列のセル配列を使用します。すべてのグループは同数の変数を含まなければなりません。

参考

|

この情報は役に立ちましたか?