如何建立具有多重選擇的模式選擇視窗JMP 社群您好,
我需要以下方面的幫助:我有一個帶有名義數字列( Values )的表( dt )。我想建立一個視窗來顯示“值”列的排序唯一值。然後我想選擇一個或多個值返回這些值並將它們傳遞給SelectWhere函數。
我絕對是 JSL 的初學者,非常感謝您的幫助。
為了解決這個問題,我建立了一個函數SelectNumericValues ,如下所示:
// function to create a modal window with selection functionality
SelectNumericValues = Function( {dt, column_name},
// Use Summarize to find unique values in the specified column
Summarize( unique_values = By( Column( dt, column_name ) ) );
// Calculate the maximum number of selections
max_selections = N Items( unique_values );
// Create a window for user selection
nw = New Window( "Select Values",
<
// call my function with table dt and nominal numeric column "Values"
selected_values = SelectNumericValues(dt, "Values");
dt_select = dt << Select Where( :Values == selected_values)
具有唯一排序值的視窗已正確呈現:

我可以選擇一個或多個選項。但我最終遇到了這兩個錯誤:
- 在存取或評估「List」時發送預期可編寫腳本的對象,{/*###*/"0", "1", "2"}
- 名稱未解析:存取或評估 'Button' 時的按鈕,Button( 1 ) /*###*/
這表示我沒有正確處理SelectNumericValues函數中的按鈕,我也錯誤地處理了SelectWhere函數中的回傳值。

作為另一個問題:我將如何實現至少應選擇一個選項的要求(在沒有選擇任何選項的情況下關閉模式視窗應該是不可能的,或者這將隱式意味著選擇所有選項)。
謝謝!
保羅
自動化和腳本編寫視窗回覆:如何建立具有多重選擇的模式選擇視窗我找到了一個可行的解決方案。我犯了以下錯誤:
- 函數SelectNumericValues傳回字元列表,而不是數字。
- SelectWhere函數呼叫需要函數Contains 來匹配數字列表。
- 這行selected_values = nw << 顯示視窗; SelectNumericValues函數中會導致按鈕相關錯誤(我認為)
因此,我需要將所選值強制為數字。我需要調整SelectWhere函數呼叫。
我發現工作正常:
// Function to generate the user selection window for numeric values
SelectNumericValues = Function( {dt, column_name},
// Use Summarize to find unique values in the specified column
Summarize( unique_values = By( Column( dt, column_name ) ) );
// Calculate the maximum number of selections
max_selections = N Items( unique_values );
// Create a window for user selection
nw = New Window( "Select Values",
<I am happy to see additional improvements from other users.回覆:如何建立具有多重選擇的模式選擇視窗我認為您需要考慮使用資料過濾器。它將為您進行顯示和選擇。
回覆:如何建立具有多重選擇的模式選擇視窗謝謝吉姆!
根據您的建議,我使用資料過濾器功能建立了一個腳本。感謝您向我指出它,因為它對於互動式資料過濾來說是一個非常有用的功能。
我的腳本實現的主要功能是根據使用者過濾後的資料建立輸出(日誌,例如儲存為 pdf 文件)。換句話說,這裡不需要任何互動式、多變量、過濾。從這個意義上說,我在這篇文章中分享的方法對我很有用。
保羅