SelectWhere() 語句中的比較大家好,
我廣泛搜索了這個網站,我認為這是一個簡單的解決方案,但由於某種原因我無法讓它工作,我已經堅持了兩天。
在下面的腳本中,我詢問使用者他想選擇特定列的哪一部分。例如,該列的值為 8。(該列的值可以為 1 到 8)。我想在該列中選擇具有該值的行,並建立一個新的 dt,在其中僅使用資料表的這個子集來建立特定的圖形。
它創建子集表,其名稱和我在文字方塊中填寫的數字。它顯示了我填寫的數字,即 XNo = "8";但是 Select where (Column == XNO) 不起作用。它不會給我錯誤,它只是不選擇特定的行或製作圖表。它會建立一個與我引用的資料表同名的新資料表。
如果我填寫 Select where (column == "8") 或 Select where(column == 8) 它可以工作。我只是希望 8 是可變的,並且操作員可以自己填寫它。
dt = 當前資料表();
col = 列(dt,"MILL_X");
col_name_list = dt << 取得列名( string );
rdata = New Window( "您要檢查哪一部分?",
<
<
X = 文字編輯框( "哪一部分?" ),
文字方塊(“點選確定儲存”),
按鈕框(“確定”,
XNo = X << 取得文字),
按鈕框(“取消”);
);
顯示(X否); //顯示給定的字串,即如果我填寫 8,它會顯示 --> XNo = "8";
//根據列上的值選擇所需的行
dt << 行選擇(
Select where( :MILL_X == XNo ), // <--- 這不起作用,它選擇整個 dt 而不是從列中選擇的值。如果我填寫 :MILL_X == 8 就可以了。但僅限於8號。
對話方塊(編輯(等於(來源列(col))),保持對話方塊開啟(0))
);
Subset( (選定行), 輸出表名稱( "X " || Char(ColletNo) || "檢查" ) );
// 使用選定的行建立所需的圖表
分配(
連續分佈(
柱(:“Y(μm)”n),
過程能力( LSL( -15 ), 目標( 0 ), USL( 15 ) )
)
);
// 或者,您可以在此處進一步自訂圖表
// 例如,新增附加元素或格式選項
dt << 清除選擇;
dt << 清除列選擇;
自動化和腳本編寫資料存取品質和工藝工程 回覆:SelectWhere() 語句中的比較嘗試將XNo 轉換為數字(Num(XNo) 或使用數字編輯框。您可能還需要稍微修改一下列引用(添加[] 進行比較)。以下是使用Big Class 表的範例,使用12-17 之間的值測試
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col = Column(dt, "age");
col_name_list = dt << get column names(string);
rdata = New Window( "Which part do you want to check?",
<<MODAL> X號=“8”; //根據列 dt << SelectWhere(col[] == Num(XNo)) 上的值選擇所需的行; dt_subset = dt << 子集(選定行); dt << 清除選擇;</MODAL>
如果允許特定值,您也可以將選擇器修改為僅允許使用者選擇特定值,但首先要讓此版本正常運作,然後考慮這些選項。
回覆:SelectWhere() 語句中的比較這不是具體的解決方案,但我剛剛發現該列需要是有序的(或至少不是連續的)。現在我只需要以這樣的方式創建它,我仍然可以獲得所有其他列,而不僅僅是年齡列。當我有正確的修復時,我會更新,但謝謝你。我知道這是一些愚蠢的東西,不起作用。
回覆:SelectWhere() 語句中的比較我不知道為什麼它之前不起作用,因為我之前嘗試過 Num() 語句以及 col[]。也許我沒有同時做它們,我不知道,嘗試了很多迭代,但它現在正在工作。甚至不需要將列更改為連續列。我之前在你的腳本中唯一沒有嘗試過的是“名稱預設為此處(1);”線。