スクリプトガイド > データテーブル > データテーブルの高度なスクリプト > データテーブルのサブセットを作成する
公開日: 04/01/2021

データテーブルのサブセットを作成する

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 ) )
);
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).