メモ: Merge Update()はUpdate()の別名です。
Update()は、あるデータテーブルのデータを別のデータテーブルのデータで置き換えます。
dt << Update( // 元のテーブルへのメッセージ
With( dataTable ), // もう一方のデータテーブル
By Row Number, /* デフォルトの結合タイプ。または
By Matching Columns( col1 == col2 ) */
Ignore Missing, // 欠測値で置き換えることはしない(オプション)
);
実際の例として、「Big Class.jmp」のサブセットを作成してみましょう。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
NewHt = dt << Subset( Columns( :名前, :"身長(インチ)"n), Output Table Name( "hts" ) );
次に、各生徒の身長に0~6インチを追加します。
diff = Random Uniform( 0, 6 );
For Each Row( NewHt, :"身長(インチ)"n = :"身長(インチ)"n + diff );
最後に、「Big Class.jmp」の生徒の身長をサブセットテーブルの新しい身長で更新します。
dt << Update(
With( NewHt ),
By Matching Columns( :名前 == :名前 ),
);
更新後のテーブルには、元のテーブルよりも多くの列が含まれる場合があります。オプションのAdd Column from Update Table()を使えば、更新されたテーブルに含める列を選択できます。
列を追加しない場合は、次のように指定します。
Data Table( "table" ) << Update(
With( Data Table( "update data" ) ),
Match Columns( :ID = :ID ),
Add Columns from Update Table( None )
);
列を追加する場合は、次のように指定します。
Data Table( "table" ) << Update(
With( Data Table( "update data" ) ),
Match Columns( :ID = :ID ),
Add Columns from Update table( :col1, :col2, :col3 )
);