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( :Name("体重(ポンド)"), :Name("身長(インチ)") ),
Source Label Column( "ID" ),
Stacked Data Column( "Y" ),
Name( "積み重ねない列" )( Keep( :年齢, :性別 ) ),
Output Table( "列を積み重ねたテーブル" )
);
dt2 = Data Table( "列を積み重ねたテーブル" );
dt2 << Split(
/* Splitは分割対象の列を追加する。*/
Split( Y ),
/* 新しい列の名前として使用する値を含む、列の分割基準となる列を追加する。*/
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は列3を追加する。値(1,2,3..)を複数の列に分割したい。
Split Byは列2を追加する。値(x,y)を新しい列の名前として使用したい。*/
dtabc << Split( Split By( :Column 2 ), Split( :Column 3 ));