スクリプトガイド > データテーブル > データテーブルの高度なスクリプト > 列を積み重ねたデータテーブルの値を分割する
公開日: 09/19/2023

列を積み重ねたデータテーブルの値を分割する

Splitメッセージは、積み重ねられた列を複数の列に分割します。

dt << Split(
	Split( columns ),
	// 分割する列(必須)
 
	Split by( column ),
	// 分割の基準となる列(必須)
 
	Group(column),
	// グループごとにデータを分割する
 
	<Private>|<Invisible>,
	// 結果のテーブルをプライベートまたは非表示にする
 
	Remaining Columns( Keep All | Drop All | Select( columns ) ),
	/* 残りの列を結果のテーブル内に含めるか指定する(デフォルトはKeep All) */
 
	<Copy formula( 0|1 )>,
	/* ソーステーブルの列の計算式を結果のテーブルに含める(デフォルトは1、真) */
 
	<Suppress formula evaluation( 0|1 )>,
	// コピーされた列の計算式を自動評価しない(デフォルトは1、真)
 
	Sort by Column Property,
	/* 出力列を、Split by columnで指定した列のプロパティを基準にして並べ替える*/
 
	Output Table( "name" ));
	// 出力テーブルの名前を指定する

次の例は、前のStack()の例の逆で、元のテーブルと同じ内容を戻します。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Stack(
    Columns( :"体重(ポンド)"n, :"身長(インチ)"n ),
    Source Label Column( "ID" ),
    Stacked Data Column( "Y" ),
	 "Non-stacked columns"n( Keep( :年齢, :性別 ) ),
    Output Table( "列を積み重ねたテーブル" )
);
dt2 = Data Table( "列を積み重ねたテーブル" );
dt2 << Split(
/* Splitで分割対象の列を指定する*/
	Split( Y ),
/* Split Byで新しい列の名前として使用する値を含む、列の分割基準となる列を指定する*/
	Split by( ID ),
	Output Table( "列を分割したテーブル" ) );

複数の行が同じ行にマッピングされた場合、1つの値しか保持されません。

dtabc = New Table( "abc",
 New Column( "Column 1", Character, Set Values( {"a", "a", "b", "b", "c"} )),
 New Column( "Column 2", Character, Set Values( {"x", "y", "x", "y", ""} )),
 New Column( "Column 3", Set Values( [1, 2, 3, 4, 5] ))
);
/* SplitでColumn 3を指定し、値(1,2,3..)を複数の列に分割する
Split ByでColumn 2を指定し、値(x,y)を新しい列の名前として使用する*/
dtabc << Split( Split By( :Column 2 ), Split( :Column 3 ));
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).