ドキュメンテーション

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

stack

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

構文

S = stack(U,vars)
S = stack(U,vars,Name,Value)
[S,iu] = stack(___)

説明

S = stack(U,vars) は、table または timetable U を、スタックされた等価の table または timetable S に変換します。関数 stackvars で指定された U の複数の変数を、S の 1 つの変数にスタックします。一般に、SU よりも少ない変数を含みますが、より多くの行を含みます。

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

  • U が table の場合、行名はスタックできません。

  • U が timetable の場合、行時間はスタックできません。

S = stack(U,vars,Name,Value) は、1 つ以上の Name,Value のペア引数で指定された追加オプションを使用して、table U を変換します。

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

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

すべて折りたたむ

テストの得点を含むテーブルを 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 はスタックされた形式です。

カテゴリカル変数 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];

U = table(Storm,Date,Natick,Boston,Worcester)
U=5×5 table
    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 に名前を付けます。

S = stack(U,{'Natick','Boston','Worcester'},...
    'NewDataVariableName','Snowfall',...
    'IndexVariableName','Town')
S=15×4 table
    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   

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

カテゴリカル変数 Town は、U のどの変数に対応する Snowfall データが含まれるかを特定します。

米国東海岸のインフルエンザ推定羅患率を含むテーブルを作成します。米国北東部、中部大西洋岸および南部大西洋岸に対して別々の変数を作成します。データ ソース: Google Flu Trends (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];

fluU = table(Month,Year,NE,MidAtl,SAtl)
fluU=6×5 table
      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 という名前を付け、インデックス ベクトル ifluU を出力して、入力するスタック解除 table fluU の行と、出力するスタック table fluS の行の対応関係を示します。

[fluS,ifluU] = stack(fluU,3:5,...
    'NewDataVariableName','FluRate',...
    'IndexVariableName','Region')
fluS=18×4 table
      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 
      ⋮

ifluU = 18×1

     1
     1
     1
     2
     2
     2
     3
     3
     3
     4
      ⋮

ifluU(5)2 となります。出力テーブル fluS の 5 行目に、入力テーブル fluU の 2 行目のデータが含まれます。

入力引数

すべて折りたたむ

入力テーブル。table または timetable として指定します。

スタックする U の変数。正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、または logical ベクトルとして指定します。

名前と値のペアの引数

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

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

出力に含める vars 以外の変数。'ConstantVariables' と、正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、または logical ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。stack は、スタックする行の各要素について定数変数からデータを複製します。

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

U は最初の次元に沿った行ラベルをもつことができます。U が table の場合は、行名をラベルとしてもつことができます。U が timetable の場合、行時間をラベルとしてもたなければなりません。

  • 'ConstantVariables' の値を指定する場合、行名または行時間を含めることができます。

  • stack は行名または行時間を複製します。これは行名や行時間が 'ConstantVariables' に含まれていない場合でも同様です。

S の新しいデータ変数の名前。'NewDataVariableName' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。既定の設定では、スタックされた U からの変数の名前の連結です。

S の新しい指標変数の名前。'IndexVariableName' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。既定値は NewDataVariableName に基づいた名前です。

出力引数

すべて折りたたむ

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

S には、説明、変数単位、変数名、行名などの追加のメタデータを格納できます。詳細については、table または timetable のプロパティの節を参照してください。

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

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

ヒント

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

拡張機能

参考

|

R2013b で導入