公開日: 11/25/2021

データテーブル内の値を積み重ねる

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, /* 系列は隣接する列から成る。そうでない場合は、この引数を指定しない*/
 
);
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).