有條件選擇哪裡<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有下面的 JSL 程式碼來選擇每個「標籤」少於 25 行的資料並對其進行子集化,保存子集,並從主工作資料集中刪除子集。 在標籤少於25 行的情況下,這工作得很好,但我需要它足夠強大,並且在沒有少於25 行的標籤的情況下工作- 在這種情況下,它應該忽略第4-6行並繼續到第7 行進行保存具有新名稱的主要工作資料集。 我怎樣才能實現這個目標?
非常感謝
1 開啟(“data.jmp”);
2 dt=當前資料表() << 摘要( Group( :tag ) );
3 資料表( "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");
回覆:有條件選擇哪裡經過一番擺弄後,以下的內容似乎對我有用。 謝謝您的幫忙。
開啟(“數據.jmp”);
dt = 當前資料表() << 摘要( Group( :tag ) );
資料表( "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" ) << 子集(( 選取行 ), 輸出表名稱("sub_small_n"));
資料表( "sub_small_n" ) << save("sub_small_n.jmp");
資料表( "data" ) << 刪除行 << save("data_less_small_n.jmp");
,
// 否則執行此操作...
資料表(“資料”)<<保存(“ data_less_small_n.jmp ”);
);
回覆:有條件選擇哪裡@rijking
僅基於(a)點 - 嘗試反向選擇是否可行? 你嘗試過嗎?如果它不起作用 - 您能否從範例資料庫中建議適合您問題的範例資料表,以便我可以嘗試重現問題以嘗試提供協助?
最好的
烏代
回覆:有條件選擇哪裡伊恩,謝謝。 這並不完全有效:
a) 我需要參考數量已選擇行(而不是我理解的 NRow 所處理的總行數) - 因為 dt2 總結了所有標籤的總行數,而不僅僅是那些 < 25 的行數。
b)如果引用 dt2 中的選定行,我認為這需要 > 0 而不是 > 24 - 因為 dt2 總結了所有標籤的總行數,所以我對所有選定的行感興趣(即使只有一個) ;這將總結出現在底層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"); );
回覆:有條件選擇哪裡您需要將“NRow()”函數與“If()”表達式結合使用。 就像是:
打開( “數據.jmp” ) ;
dt =目前數據表() <<概括(團體( :標籤) ) ;
dt2 =數據表( “資料來源(標籤)” ) <<選擇地點( : N 行< 25 ) <<種類(經過( : N 行) ,命令(上升) ,輸出表名稱( “小n的摘要” )) ;
如果(
列( dt2 > 24 ,
// 如果滿足條件,則執行此操作。 。 。
數據表( “數據” ) <<子集((選定的行) ,輸出表名稱( “sub_small_n” )) ;
數據表( “sub_small_n” ) <<節省( “sub_small_n.jmp” ) ;
數據表( “小n的摘要” ) <<節省( “summary_of_small_n.jmp” )
,
// 否則執行此操作。 。 。
數據表( “數據” ) <<刪除行<<節省( “數據_less_small_n.jmp” ) ;
) ;