獲取行命令僅適用於特定列你好,
我正在使用“get rows where”命令將數值替換為“P”或“N”,具體取決於它們是否達到閾值。
這是代碼:
dt = Open(“C:\ test_data.jmp”);
thresh = 12; //用戶設置此閾值
嘗試(dt:HOOK [dt << get rows where(:Hook> = thresh)] =“P”);
嘗試(dt:HOOK [dt << get rows where(:Hook ==“”)] =“N”);
所以這很好用,用N和P填充列。如果我複制並粘貼這兩個try行並更改列名稱,則它將無法在其他列上運行。如果我更改命令的順序或更改列的順序,它仍然只執行Hook列。
我錯過了什麼?
謝謝!
ķ
Re:Get Rows其中命令僅適用於特定列由於列是數字,因此比較
Try( dt:HOOK[dt << get rows where( :Hook == "" )] = "N" );
不管用。 您應該使用缺少:
Try( dt:HOOK[dt << get rows where( is missing(:Hook))] = "N" );
但正如其他人所說的那樣,對“N”的賦值不起作用,因為該列是數字的。
Re:Get Rows其中命令僅適用於特定列是的.....它會這樣做,但是,這不是一個好的軟件實踐。 我建議您不要將值設置為“P”或“N”,而是將值更改為其他數值,並使用列屬性“值標籤”更改指定的數值,以顯示為“ A片”。 這樣你可以繼續正確地比較數字值,就像你使用“Thresh”值一樣,但是顯示器可以提供你想要的。
Re:Get Rows其中命令僅適用於特定列我覺得 @txnelson 是正確的。
從您的嘗試中刪除Try(),以便您可以在日誌中看到錯誤。
以下是嘗試將字符值分配給數字列時將收到的錯誤示例。
//:*/
dt=open("$SAMPLE_DATA\Big Class.jmp");
thresh=65;
dt:height[dt << get rows where( :height >= thresh )] = "P";
/*:
Column "height" requires numeric values in access or evaluation of 'Bad Argument'
Re:Get Rows其中命令僅適用於特定列不要試圖相反,但當它適用於那個cloumn時,它會在插入P和N時自動將列轉換為字符。
Re:Get Rows其中命令僅適用於特定列如果您的列是數字和連續,則將值設置為“P”或“N”將不起作用。 您可以將單元格設置為等於數值,但不能設置為字符值。
Re:Get Rows其中命令僅適用於特定列我實際上也考慮過這一點(我的故障排除對於新手來說並不太簡陋),但當我查看列信息時,所有三列都設置為“數字”和“連續”。
Re:Get Rows其中命令僅適用於特定列您的列存在數字或字符問題。 列中的所有單元格必須是字符或數字。 在您的代碼中,您要求將列Hook與數值“Thresh”進行比較。 “Thresh”的數值為12。 然後,您想要將Hook的值設置為字符“P”或“N”。
列Hook,Rounds和Whip是數字還是字符?
Re:Get Rows其中命令僅適用於特定列我希望它*那麼簡單。附加代碼如下。是否有某種文件操作符我丟失了 - 就像你需要在每列替換後關閉或保存?
名稱默認為此處 ( 1 );
dt = 打開 ( “C:\ test_data.jmp” );
thresh = 12 ; //用戶設置此閾值(定義輸出中的行)
嘗試 (dt:HOOK [dt << 得到行在哪裡 (:Hook> = thresh)] = “P” );
嘗試 (dt:HOOK [dt << 得到行在哪裡 (:鉤子== “” )] = “N” );
嘗試 (dt:ROUNDS [dt << 得到行在哪裡 (:Rounds> = thresh)] = “P” );
嘗試 (dt:ROUNDS [dt << 得到行在哪裡 (:Rounds == “” )] = “N” );
嘗試 (dt:WHIP [dt << 得到行在哪裡 (:Whip> = thresh)] = “P” );
嘗試 (dt:WHIP [dt << 得到行在哪裡 (:鞭子== “” )] = “N” );
Re:Get Rows其中命令僅適用於特定列剪切和粘貼並更改Hook值後,您能告訴我們線條嗎?
我的猜測是你沒有改變Hook出現的兩列中的兩個地方之一。