ドキュメンテーション

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

unstack

単一変数からデータを取り出して複数変数に入れる

説明

U = unstack(S,vars,ivar) は、table または timetable S を、同等のスタック解除された table または timetable U に変換します。varsS の変数を指定し、そのそれぞれが U の複数の変数にスタック解除されます。一般に、US よりも変数は多く、行は少なく含みます。

ivar 入力引数は、unstack で指標変数として使用する S の変数を指定します。ivar の値により、vars から取得された要素がスタック解除後に U のどの変数に格納されるかが決まります。

関数 unstack での残りの変数の処理は table と timetable とで異なります。

  • S が table の場合、unstack は残りの変数をグループ化変数として扱います。グループ化変数の値の一意の組み合わせはそれぞれ、S の行のグループを識別します。この行グループが U の単一の行にスタック解除されます。

  • S が timetable の場合、unstack は残りの変数を破棄します。ただし、unstack は行時間のベクトルをグループ化変数として扱います。

table の行名または timetable の行時間をスタック解除したり、いずれかを指標変数として指定することはできません。引数 'ConstantVariables' を使用して、行名または行時間を定数変数として指定できます。

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

たとえば、unstackS の変数を U の変数に変換する方法を指定できます。

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

すべて折りたたむ

さまざまな都市のさまざまな暴風について、降雪量を示すテーブルを作成します。

Storm = [3;3;1;3;1;1;4;2;4;2;4;2];
Town = {'T1';'T3';'T1';'T2';'T2';'T3';...
    'T2';'T1';'T3';'T3';'T1';'T2'};
Snowfall = [0;3;5;5;9;10;12;13;15;16;17;21];

S = table(Storm,Town,Snowfall)
S=12×3 table
    Storm    Town    Snowfall
    _____    ____    ________

      3      'T1'        0   
      3      'T3'        3   
      1      'T1'        5   
      3      'T2'        5   
      1      'T2'        9   
      1      'T3'       10   
      4      'T2'       12   
      2      'T1'       13   
      4      'T3'       15   
      2      'T3'       16   
      4      'T1'       17   
      2      'T2'       21   

S には、各暴風の積雪量エントリが 1 つの都市ごとに 1 つ、合計 3 つ存在します。S はスタックされた形式です。

変数 Snowfall を、変数 Town で指定された都市ごとに 1 つ、3 つの変数に分割します。出力テーブル U はスタック解除された形式です。

U = unstack(S,'Snowfall','Town')
U=4×4 table
    Storm    T1    T2    T3
    _____    __    __    __

      3       0     5     3
      1       5     9    10
      4      17    12    15
      2      13    21    16

U の各行には、グループ化変数 Storm の同じ値をもつ、S の行からのデータが含まれます。Storm の一意の値の順番は、U 内のデータの順番を決定します。

データをスタック解除し、指標変数において同じ値をもつ同じグループ内の複数の行に、集積関数を適用します。

2 日間にわたる 2 つの株価に関するデータを含むテーブルを作成します。

Date = [repmat({'4/12/2008'},6,1);...
    repmat({'4/13/2008'},5,1)];
Stock = {'Stock1';'Stock2';'Stock1';'Stock2';...
    'Stock2';'Stock2';'Stock1';'Stock2';...
    'Stock2';'Stock1';'Stock2'};
Price = [60.35;27.68;64.19;25.47;28.11;27.98;...
    63.85;27.55;26.43;65.73;25.94];

S = table(Date,Stock,Price)
S=11×3 table
       Date         Stock      Price
    ___________    ________    _____

    '4/12/2008'    'Stock1'    60.35
    '4/12/2008'    'Stock2'    27.68
    '4/12/2008'    'Stock1'    64.19
    '4/12/2008'    'Stock2'    25.47
    '4/12/2008'    'Stock2'    28.11
    '4/12/2008'    'Stock2'    27.98
    '4/13/2008'    'Stock1'    63.85
    '4/13/2008'    'Stock2'    27.55
    '4/13/2008'    'Stock2'    26.43
    '4/13/2008'    'Stock1'    65.73
    '4/13/2008'    'Stock2'    25.94

S には、初日の STOCK1 の 2 つの価格と、初日の STOCK2 の 4 つの価格が含まれます。

各株の個別の変数と、各日について 1 行を含むテーブルを作成します。Date をグループ化変数として使用し、集積関数 @mean を、各グループの変数 Price の数値に適用します。

[U,is] = unstack(S,'Price','Stock',...
    'AggregationFunction',@mean)
U=2×3 table
       Date        Stock1    Stock2
    ___________    ______    ______

    '4/12/2008'    62.27     27.31 
    '4/13/2008'    64.79     26.64 

is = 2×1

     1
     7

U は、日付別にグループ化された株ごとの平均価格を含みます。

is は、S の行の各グループに対する最初の値のインデックスを識別します。グループ '4/13/2008' の最初の値は、S の 7 番目の行にあります。

入力引数

すべて折りたたむ

入力テーブル。table または timetable として指定します。S はスタック解除するデータ変数 vars と、指標変数 ivar を含まなければなりません。S の残りの変数は、グループ化変数または定数変数のいずれかとして扱うことができます。

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

S の指標変数。正の整数、文字ベクトル、または string スカラーとして指定します。ivar で指定された変数の値により、vars で指定された変数から取得された要素が U のどの変数に格納されるかが決まります。

ivar で指定される変数は、数値ベクトル、logical ベクトル、文字配列、文字ベクトルの cell 配列、string 配列、または categorical ベクトルになります。

名前と値のペアの引数

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

例: 'AggregationFunction',@mean は、vars の値に集積関数 @mean を適用します。

行のグループを定義する S 内のグループ化変数。'GroupingVariables' と、正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、または logical ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。S の行の各グループは、U の 1 つの行になります。

S は最初の次元に沿った行ラベルをもつことができます。S が table の場合は、行名をラベルとしてもつことができます。S が timetable の場合、行時間をラベルとしてもたなければなりません。unstack は行ラベルをグループ化変数として扱うことができます。

  • 'GroupingVariables' を指定しない場合、S が timetable であれば、unstack で行時間がグループ化変数として扱われます。

  • 'GroupingVariables' を指定する場合、S に含まれる行名または行時間は、'GroupingVariables' の値に含めないと unstack でグループ化変数として扱われません。

グループ内の変数定数。'ConstantVariables' と、正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、または logical ベクトルのいずれかで構成されるコンマ区切りのペアとして指定します。

U のこれらの変数の値は、S の各グループの最初の行から取得されます。

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

U の新しいデータ変数の名前。'NewDataVariableNames' と、文字ベクトルの cell 配列または string 配列で構成されるコンマ区切りのペアとして指定します。

'NewDataVariableNames' を指定しない場合、unstackU の新しいデータ変数の名前を ivar で指定された指標変数の値に基づいて作成します。

vars の値から単一値への集積関数。'AggregationFunction' と関数ハンドルで構成されるコンマ区切りのペアとして指定します。unstack はこの関数を、ivar に同じ値をもつ同じグループからの行に適用します。この関数はデータ値を単一値に集積しなければなりません。

数値データ変数の場合、既定値は @sum です。数値以外の変数の場合、既定関数はありません。同じグループ内の複数の行が ivar の同じ値をもつ場合、'AggregationFunction' の名前と値のペアの引数を指定しなければなりません。

出力引数

すべて折りたたむ

出力テーブル。table または timetable として返されます。U にはスタック解除されたデータ変数、グループ化変数および任意の定数変数からの各グループの最初の値が含まれます。

U のデータの順番は、グループ化変数の一意の値の順番に基づきます。

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

S のインデックス。列ベクトルとして返されます。U の各行に対して、インデックス ベクトル isS の対応する行グループ内の最初の値のインデックスを識別します。

詳細

すべて折りたたむ

グループ化変数

グループ化変数は、データのグループ化や分類のために使用するユーティリティ変数です。グループ化変数はグループ別にデータを要約または可視化する場合に便利です。1 つ以上のグループ化変数を指定することで、テーブルでグループを定義できます。

グループ化変数は次の任意のデータ型です。

  • カテゴリカル ベクトル

  • 文字ベクトルの cell 配列

  • string 配列

  • 文字配列

  • 数値ベクトル (通常は正の整数を含みます)

  • logical ベクトル

グループ化変数の値が同じである行は同じグループに属します。複数のグループ化変数を使用する場合、グループ化変数の値と同じ組み合わせをもつ行は同じグループに属します。

ヒント

  • S の複数のデータ変数を指定できます。各変数は U のスタック解除された一連のデータ変数になります。正の整数のベクトル、複数の変数名を格納する cell 配列か string 配列、または logical ベクトルを使用して、vars を指定します。入力引数 ivar によって指定された 1 つの指標変数が、vars によって指定されたすべてのデータ変数に適用されます。

参考

|

R2013b で導入