Select All Rowsは、データテーブル内のすべての行を選択(強調表示)します。
dt << Select All Rows;
すべての行が選択されている場合、Invert Row Selectionを使用してそれらの選択を解除できます。このコマンドは、各行の選択の状態を逆にするので、選択されている行は選択が解除され、選択されていない行は選択されます。
dt << Invert Row Selection;
メモ: 現在の選択内容によって結果が異なるInvert Row Selectionを除き、選択メッセージを新しく使用した場合、新たに選択が行われます。すでに選択している行があり、選択された行に新しいメッセージを送ると、それらの行は、まず選択が解除されます。
特定の行を選ぶには、Go To Rowを使います。
dt << Go To Row( 9 );
データテーブルの特定の行を行番号で選択するには、Select Rowsコマンドを使います。コマンドの引数は行番号のリストです。たとえば、データテーブルの行1、3、5、および7を選択するには、次のように指定します。
dt << Select Rows( {1, 3, 5, 7} );
dt << Select Rows( Index( 7, 10 ) );
dt << Select Where( Any( Row() == Index( 7, 10 ) ) );
データ値に基づいて行を選ぶには、Select Whereを使い、引数として条件式を指定します。
たとえば、「Big Class.jmp」データテーブルのうち、生徒の年齢が14歳以上である行を選択するには:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( :年齢 > 13 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col = Column( dt, 2 );
dt << Select Where( col[] < 14 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( :年齢 < 15 & :性別 == "F" );
前に選択した行を解除しないまま、もう1つの行を選択するには、<< Select Whereを<< Select WhereおよびCurrent Selection("extend")引数と組み合わせます。これは、ORステートメントの代わりになります。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Where( :年齢 == 14 );
dt << Select Where( :性別 == "F", Current Selection( "extend" ) );
dt = Open( "$SAMPLE_DATA/Hollywood Movies.jmp" );
my_genres = {"Romance", "Comedy"};
dt << Select Where( Contains( my_genres, :Genre ) );
列参照を使用してWhereステートメント内の列名を参照する際、正しいデータテーブルに解決されるように列参照を評価する必要があります。たとえば、次のスクリプトでは、X(Xcol)およびY(Ycol)列参照に対するパラメータがdt内のデータテーブルにリンクされています。しかし、プラットフォームの実行はWhereサブセットデータテーブルに関連付けられています。そのため、このスクリプトではエラーが発生します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
Ycol = Column( dt, "体重(ポンド)" ); // 体重(ポンド)への列参照
Xcol = Column( dt, "身長(インチ)" ); // 身長(インチ)への列参照
dt << Bivariate( Y( Ycol ), X( Xcol ), Fit Line(), Where( :性別 == "F" ) );
列名を正しいデータテーブルに評価するには、次のようにEval()式を使用するか、列名を直接参照します。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Bivariate(
Y( Eval( Ycol ) ), // またはY( :Name("体重(ポンド)") )
X( Eval( Xcol ) ), // またはX( :Name("身長(インチ)") )
Fit Line(),
Where( :性別 == "F" )
);
dt << Select Excluded;
dt << Select Hidden;
dt << Select Labeled;
除外されていない行、表示されている行、またはラベルがない行を選ぶには、選択メッセージと選択逆転メッセージの両方を同じステートメントに入れるか、またはこの2つのメッセージを続けて送ります。
dt << Select Hidden << Invert Row Selection;
dt << Select Hidden;
dt << Invert Row Selection;
データテーブルにある重複した行を選択するには、 Select Duplicate Rowsメッセージを用います。
dt = Open( "$SAMPLE_DATA/San Francisco Crime.jmp" );
dt << Select Duplicate Rows(); // 301行目と8864行目を選択します
dt = Open( "$SAMPLE_DATA/San Francisco Crime.jmp" );
dt <<Select Duplicate Rows();
dt << Exclude();
dt = Open( "$SAMPLE_DATA/San Francisco Crime.jmp" );
dt << Select Duplicate Rows( Match( Column( "事件番号" ), :時刻 ) );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Select Duplicate Rows( Match( :年齢 ) );
dt << Select Where( :年齢 > 15, Current Selection( "restrict" ) );
特定のセルを参照するには、そのセルの行番号を添え字として指定します。次の例では、「体重(ポンド)」列に添え字[1]が使われ、 計算式によって「体重(ポンド)」列の最初の値に対する各「身長(インチ)」の比率が算出されます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "比率", Formula( Name("身長(インチ)") / Name("体重(ポンド)")[1] ) );
dt << Select Randomly( number );
dt << Select Randomly( probability );
行メニューコマンド[一致するセルを選択]も(Select Matching Cells)JSLに組み込まれています。
dt << Select Matching Cells;
// 現在のデータテーブルの中で一致するセルを選択する
dt << Select All Matching Cells;
// 開いているすべてのデータテーブルの中で一致するセルを選択する