Stack()は、複数の列の値を1つの列に積み重ねます。
dt << Stack(
Columns ( columns ), // ひとつに積み重ねる列
Source Label Column ( "name" ), // ソース列の識別
Stacked Data Column ( "name" ), // 新しく積み重ねた列の名前
Number of Series( n ), // 系列の数
Contiguous, // 系列が隣接する列から成ることを指定する。
Keep ( columns ), // データテーブルに保持する列
Drop ( columns ), // データテーブルから除去する列
Output Table ( "name" ), // 新しいデータテーブルの名前
Columns( columns ) ), // 積み重ねたテーブルに含める列を指定
Copy Formula( Boolean ), //積み重ねた列に計算式をコピーする
Drop All Other Columns( Boolean ), // 積み重ねていない列を新しいテーブルから削除する
"non-stacked columns"n )( Keep( col1, ... ) // 積み重ねていない列のうち、保持するもの
"non-stacked columns"n )( Drop( col1, ... ) // 積み重ねていない列のうち、削除するもの
Suppress Formula Evaluation( Boolean ) // 計算式を評価しない
たとえば、次のスクリプトは「Big Class.jmp」の「体重(ポンド)」列と「身長(インチ)」列を積み重ねます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
StackedDt = dt << Stack(
Columns( :"体重(ポンド)"n, :"身長(インチ)"n ),
Source Label Column( "ID" ),
Stacked Data Column( "Y" ),
"Non-stacked columns"n )( Keep( :年齢, :性別 ) ),
Output Table( "列を積み重ねたテーブル" )
);
Columns(columns)引数には、列のリスト、またはリストを導き出す式を指定できます。
複数の列のセットをそれぞれ積み重ねることもできます。
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
dt << Stack(
Columns(
:BP 8M,
:BP 12M,
:BP 6M,
:BP 8W,
:BP 12W,
:BP 6W,
:BP 8F,
:BP 12F,
:BP 6F
),
Stacked Data Column( "BP" ),
Source Label Column( "Day" ),
Number of Series( 3 ), // 積み重ねる系列の数
Contiguous, /* 系列は隣接する列から成る。そうでない場合は、この引数を指定しない*/
);