Subset()は、指定された行から新しいデータテーブルを作成します。行を指定しない場合、Subsetは選択されている行を使います。行が選択も指定もされていない場合は、すべての行を使います。列が選択も指定もされていない場合は、すべての列を使います。Subsetに引数を指定しなかった場合、「サブセット」ウィンドウが表示されます。
dt << Subset((<"Private">|<"Invisible">), <Selected Columns>, <Columns(column list)>, <Selected Rows>, <Rows([number, number, ...])>, <By(column list)>, <Sampling Rate(fraction)>, <Sample Size(integer)>, <Stratify(column list)>, <Link to Original Data Table(Boolean)>, <Copy Formula(Boolean)>, <Suppress Formula Evaluation(Boolean)>, <Keep by Column>);
注: その他の引数については、[ヘルプ]メニューの[スクリプトの索引]を参照してください。
たとえば、Big Class.jmpのうち、年齢が「12」であるすべての行を選択するには:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For Each Row( Selected( Row State() ) = (:年齢 == 12) );
subdt = dt << Subset( Output Table Name( "サブセット" ) );
3つの列とすべての行を選択するには、次のスクリプトを実行します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
subDt1 = dt << Subset(
Columns( :名前, :年齢, :Name("身長(インチ)") ),
Output Table Name( "Big Class 2" )
);
2つの列の指定した行を取り出し、元のデータテーブルとリンクしたテーブルを作成するには、次のスクリプトを実行します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
subDt2 = dt << Subset(
Columns( :名前, :Name("体重(ポンド)") ),
Rows( [2, 4, 6, 8] ),
Linked
);
次の例では、まず年齢が12歳のすべての行を選択し、抽出しています。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( :年齢 == 12 );
dt << Subset( ( Selected Rows ), Output Table Name( "サブセット" ) );
行が選ばれているかを確認し、その結果によって現在のデータテーブルのサブセットを作成したり、別のデータを開いたりするには、以下のスクリプトを実行します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( :年齢 == 12 );
/* 条件によって選択された行がない場合は、「Fitness.jmp」を開く。
それ以外の場合は、「Big Class.jmp」のサブセットテーブルを生成する。*/
If( N Rows( dt << Get Selected Rows ) == 0,
newdt = Open( "$SAMPLE_DATA/Fitness.jmp" ),
newdt = dt << Subset( All Columns( 1 ), Selected Rows( 1 ) )
);