JSLを使用したjmpデータテーブルのクエリやあ、
Big Class.jmp で 12 歳と 13 歳の異なる名前のリストを取得する必要があります。
私の現在のやり方は非常に効率が悪いようです。 (場所、サブセットを選択してください...)
Query(); を使用してこれを行う方法は何ですか?
ありがとう。
私のスクリプトは次のとおりです。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
AgeList = {13, 15};
dt << Select where( Contains( AgeList, :Age ) > 0 );
SubsetDt = dt << Subset( Selected Rows, Columns( "name" ) );
Summarize( SubsetDt, DistinctNames = By( :(1) ) );
Close( SubsetDt, nosave );
Show( DistinctNames );Re: JSLを使用したjmpデータテーブルのクエリありがとうございます。まさにこれが私が必要としていたものです。
Re: JSLを使用したjmpデータテーブルのクエリありがとう、ジム、 @txnelson 。
@tom_abramov 、これを行うには複数の方法があります。 クエリという単語を使用したため、より複雑な SQL 型の選択があるのではないかと思い、JMP query() 関数を使用しました。以下は SQL 構文を必要としない簡単な方法です。 連想配列はキー付きリストであり、キーは一意である必要があります。:name[idx] は、12、13、15 歳のすべての行のリストを生成します。 連想配列には、値 1 が関連付けられた一意の名前のみが含まれます。 一意の名前は連想配列のキーです。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
idx = dt << get rows where(Contains(Agelist,:age));
uniq_names = Associative Array( :name[idx] ) <<GET keys=""></GET>
Re: JSLを使用したjmpデータテーブルのクエリクエリでデータ テーブルを作成することは実際には阻害要因ではありません。以下のスクリプトは、前のスクリプトを簡単に変更したもので、最終データ テーブルから [名前] 列の内容をリストに移動し、データ テーブルを削除することが追加されています。スクリプトを実行している限り、データ テーブルは表示されません。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ),invisible, Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
namesList = ndtQ:Name << get values;
Close( dt, NoSave );
close(ndtQ, nosave);Re: JSLを使用したjmpデータテーブルのクエリとても助かります、ありがとうございます。
JMP15を使用しています。
もう 1 つの質問ですが、データ テーブルを作成する代わりに、クエリの結果をリストに直接保存できますか?
これは、テーブルが必要ではなく、個別の名前のリストが必要であるためです。
そうでない場合でも、[場所を選択] --> [サブセット] よりもはるかに優れています。
ありがとう。
Re: JSLを使用したjmpデータテーブルのクエリ@tom_abramov 、
使用している JMP のバージョンについては言及していません。JMP query() 関数が最初に JMP 12 または 13 で使用可能になったかは覚えていません。 JMP テーブルでは標準 SQL ステートメントを使用できます。Big Class には 12 歳と 15 歳の固有でない名前が Robert しかないため、12 歳、13 歳、15 歳用にリクエストを変更しました。
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ), Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
ndtQ << set name( "Unique BC Names" );
Wait( 3 );
Close( dt, NoSave );
結果は次のとおりです。
