條件語句、操作和刪除列<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />大家好,
我在使用 JSL 腳本時遇到問題,我研究了文檔、書籍和用戶論壇以尋求答案。
我在 JSL 中編寫了一個包含條件語句的腳本,其中一個“結果”是執行刪除行之類的操作。這可以在條件語句中完成嗎?
讓我們使用這個示例代碼:
NE3=3;
NE4=5;
/* 這些變量可以取不同的值。 */
如果 (NE3==NE4,
新編號 = NE3,
NewNum = 索引 (NE3, NE4)
);
如果 (NewNum == 0,
打印(“不刪除”),
當前數據表()<<刪除列(NewNum)
);
如您所見或猜到的,我無法刪除列。更重要的是,我使用了第一個條件語句,因為我希望它創建一個範圍或單個值。
但是,我不確定如何使用 0 作為值,因為 JMP 無法刪除不存在的內容(即第 0 列)。任何建議將不勝感激!
非常感謝,
ķ
回复:條件語句、操作和刪除列Index() 給出一個列向量,因此是雙括號。 嘗試轉置矩陣。
DC_List1 =作為列表(轉置(指數( DC1 , DC2 ))) ;
DC_List2 =作為列表(轉置(指數( DC3 , DC4 ))) ;
回复:條件語句、操作和刪除列我一直在更多地使用條件語句和刪除列。我用它玩了一些,我明白你的意思是刪除列採用單個列名或索引或列名或索引列表。但是,在運行給定代碼並僅針對刪除列操作進行隔離並創建索引列表之後,我仍然無法刪除列的全部索引。例如:
假設 dt 有 13 列,我想刪除前三個 (1-3) 和後兩個 (12-13)。
DC1 = 1 ;
DC2 = 3 ;
DC3 = 12 ;
DC4 = 13 ;
DC_List1 =作為列表(指數( DC1 , DC2 )) ;
DC_List2 =作為列表(指數( DC3 , DC4 )) ;
DC_List3 = DC_List1 || DC_List2 ;
當前數據表() <<刪除列( dc_list3 ) ; /* 僅刪除第一列 b/c,即第一個變量的值。 */
/* 即使只刪除一個已創建的列表,它仍然會失敗。 */
當前數據表() <<刪除列( dc_list1 ) ; /* 僅刪除第一列 b/c,即第一個變量的值。 */
節目( dc_list1 ) ; /*dc_list1 = {{1, 2, 3}}; */
節目( dc_list3 ) ; /* dc_list3 = {{1, 2, 3}, {12, 13}}; */
我知道“作為列表”函數將矩陣轉換為列表,但我不明白為什麼它會給它雙花括號。我認為這就是我為此拋棄我的代碼的原因。我嘗試了許多組合都無濟於事。有什麼想法/建議/幫助嗎?非常感謝您的幫助!
回复:條件語句、操作和刪除列一點批評都沒有!我要了。我認為這可以幫助我(和 JMP 社區)解決問題並處理更精細的細節。我學到了很多東西,我很感激你花時間回答我的問題並教我那些重要的細節。
回复:條件語句、操作和刪除列您可以在條件語句中運行一條語句或 1000 條語句。您可以在條件語句中執行可操作的語句,如我的代碼所示。
您的語法在某些方面不正確。
如果 (NE3==NE4,
新編號 = NE3,
NewNum = 索引 (NE3, NE4)
);
此 IF 語句的結果是 newnum 是數字或矩陣。這沒關係,但可能有點令人困惑,因為 newnum 用於兩種不同類型的值(數字和矩陣)。但這會導致下一個 IF 語句出現問題,如下所示。
如果 (NewNum == 0,
打印(“不刪除”),
當前數據表()<<刪除列(NewNum)
);
這確實是問題所在。如果 NE3 和 NE4 為 0,Newnum 只會為 0。如果您從前面的 IF 語句中得到一個矩陣(當 NE3 不等於 NE4 時),那麼 NewNum 與 0 的比較沒有意義。最後,您的刪除列語句僅在 newnum 是整數或列表時才有效。所以 AS LIST 語句是必不可少的。
我希望這會有所幫助——這旨在作為建設性的批評。
我在第一次學習 JSL 時遇到了很多困難,尤其是 IF 語句!我開發了一種樣式,其中包含註釋,顯示語句的 THEN 和 ELSE 部分在哪裡。例如:
如果(時間選擇== 1 ,
// 然後
日期子句= “當前的” ;
案例列表= { 1 , 2 , 3 , 4 } ;
// 別的
,
日期子句= “累積” ;
案例列表= { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } ;
) ;
回复:條件語句、操作和刪除列謝謝你的幫助!我真的很感激。一個對條件語句至關重要的問題:您能否在條件語句中執行可操作(也就是刪除和/或添加列、行、dt)?我不明白為什麼代碼沒有刪除指定的列。僅僅是因為我的示例語句中缺少 as list 函數嗎? 還是我的語法關閉了?我仍在學習 JSL 中條件語句的所有細節,我看到您使用分號將一些表達式“粘合”在一起。再次感謝!
回复:條件語句、操作和刪除列這有點棘手。刪除列採用單個列名或索引,或列表列名或索引。這個程序可以解決問題。注意清單將矩陣轉換為列表的函數:
NE3 = 3 ;
NE4 = 5 ;
/* 這些變量可以取不同的值。 */
dt =當前數據表() ;
數控= ncols ( dt ) ;
如果( ne3 > 0 & ne3 <=數控& ne4 > 0 & ne4 <=數控,
如果( NE3 == NE4 ,
dt <<刪除列( ne3 ) ;
,
新列表=作為列表(指數( NE3 , NE4 )) ;
dt <<刪除列(新列表) ;
) ;
) ;