条件付き選択場所<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />以下の JSL コードでは、「タグ」ごとに 25 行未満のデータを選択してサブセット化し、サブセットを保存し、メインの作業データセットからサブセットを削除します。 これは、25 行未満のタグがある場合には正常に機能しますが、堅牢であり、25 行未満のタグがない場合でも機能する必要があります。その場合は、行 4 ~ 6 を無視して、保存するために行 7 に進む必要があります。メインの作業データセットに新しい名前が付けられます。 どうすればこれを達成できますか?
どうもありがとう
1 Open( "data.jmp" );
2 dt=現在のデータテーブル() << Summary( Group( :tag ) );
3 Data Table( "data By (tag)" ) << Select Where( :N Rows < 25) << Sort( By( :N Rows ), Order( Ascending ), 出力テーブル名("summary_of_small_n"));
4 データ テーブル( "data" ) << サブセット(( 選択された行 ), 出力テーブル名("sub_small_n"));
5 データテーブル( "sub_small_n" ) << save("sub_small_n.jmp");
6 データテーブル( "summary_of_small_n" ) << save("summary_of_small_n.jmp");
7 データテーブル( "data" ) << 行を削除 << save("data_less_small_n.jmp");
Re: 条件付き選択場所もう少しいじった後、以下はうまくいくようです。 助けてくれてありがとう。
Open( "data.jmp" );
dt = 現在のデータ table() << Summary( Group( :tag ) );
Data Table( "data By (tag)" ) << Select Where( :N Rows < 25) << Sort( By( :N Rows ), Order( Ascending ), 出力テーブル名("summary_of_small_n_tag"));
データ テーブル( "summary_of_small_n_tag" ) << save("summary_of_small_n_tag.jmp");
num_selected = nrows(dt << 選択された行を取得);
if(num_selected(dt > 0),
// 条件が満たされている場合は、次のようにします...
Data Table( "data" ) << Subset(( 選択された行 ), 出力テーブル名("sub_small_n"));
データテーブル( "sub_small_n" ) << save("sub_small_n.jmp");
Data Table( "data" ) << 行を削除 << save("data_less_small_n.jmp");
、
// それ以外の場合はこうします...
データ テーブル( "データ" ) << save(" data_less_small_n.jmp ");
);
Re: 条件付き選択場所@rijking
ポイント (a) に基づいて、選択を反転してみるとうまくいくでしょうか? 試してみましたか?うまくいかない場合は、問題を再現して解決できるように、サンプル データ ライブラリから問題に適合するサンプル データ テーブルを 1 つ提案していただけますか。
最高
ウダイ
Re: 条件付き選択場所イアン、ありがとう。 これは次のように完全に機能しません。
a) の数を参照する必要があります。選択された行数 (NRow が動作すると理解している合計行数ではなく) - dt2 は、25 未満のタグだけでなく、すべてのタグの合計行数を要約するためです。
b) dt2 で選択された行を参照する場合、これは > 24 ではなく > 0 である必要があると思います。dt2 はすべてのタグの行の合計数を要約するため、選択されたすべての行に興味があります (たとえ 1 つしかない場合でも) ; それは、基礎となる dt 内の 25 行未満に出現するタグを要約することになります)。
他にご提案がございましたらよろしくお願いいたします。 ありがとう。
Ian@JMP wrote:You need to use the 'NRow()' function in combination with an 'If()' expression. Something like:Open( "data.jmp" );dt = current data table() << Summary( Group( :tag ) );dt2 = Data Table( "data By (tag)" ) << Select Where( :N Rows < 25) << Sort( By( :N Rows ), Order( Ascending ), Output Table Name("summary_of_small_n"));if( NRow(dt2 > 24, // If the condition is satisfied, do this . . . Data Table( "data" ) << Subset(( Selected Rows ), Output Table Name("sub_small_n")); Data Table( "sub_small_n" ) << save("sub_small_n.jmp"); Data Table( "summary_of_small_n" ) << save("summary_of_small_n.jmp") , // Else do this . . . Data Table( "data" ) << delete rows << save("data_less_small_n.jmp"); );
Re: 条件付き選択場所「NRow()」関数を「If()」式と組み合わせて使用する必要があります。 何かのようなもの:
開ける( 「データ.jmp」 ) ;
dt =現在のデータテーブル() <<まとめ(グループ( :鬼ごっこ) ) ;
dt2 =データ表( 「データ別(タグ)」 ) <<場所を選択してください( : N 行< 25 ) <<選別(による( : N 行) 、注文(上昇) 、出力テーブル名( 「small_n の概要」 )) ;
もし(
Nロウ( dt2 > 24 、
// 条件が満たされている場合は、これを実行します。 。 。
データ表( "データ" ) <<サブセット((選択された行) 、出力テーブル名( 「サブ_スモール_n」 )) ;
データ表( 「サブ_スモール_n」 ) <<保存( 「sub_small_n.jmp」 ) ;
データ表( 「small_n の概要」 ) <<保存( 「summary_of_small_n.jmp」 )
、
// それ以外の場合はこれを実行します。 。 。
データ表( "データ" ) <<行を削除する<<保存( 「data_less_small_n.jmp」 ) ;
) ;