如何製作 JMP 腳本來為用戶輸入創建一個新窗口,根據另一個列為列分配值你好呀,
我被困在我的 JMP 腳本的特定部分,希望能從不同的角度得到一些幫助。
我有一個看起來像這樣的數據集,但有更多的類別,每個類別都有更長的名稱。

我想根據給定的列創建另一個帶有數值的列。 該產品需要完全自動化,帶有一個彈出窗口,其中列出了每個類別,並帶有數字編輯框,用戶可以輸入與類別對應的數值。 例如:
彈出窗口框:彈出窗口框中所有提示的新窗口。
輸入對應於 A 的值: ___1___ 輸入對應於 B 的值: ___2___ 輸入對應於 C 的值: ___3___ 輸入對應於 D 的值: ___4___ 輸入對應於 E 的值: ___5___ |
生成的數據表應如下所示:

下面是我現在擁有的 JMP 腳本。 我還將 JMP 文件上傳到了這篇文章。 我需要幫助的是紅色文字以下。 我無法根據用戶輸入並對應於列表中的第 i 個唯一類別,在 for 循環中分配第 i 個值, unique_char , 到初始化數字列表中的第 i 個位置,數字列表,稍後將在下一個 for 循環中用於創建列 2(在下面的 JMP 腳本末尾)。
dt = Current Data Table();
//get the unique character variable list
Names Default To Here( 1 );
col9 = Column(dt, "Column 1");
unique_char = Associative Array(col9) << get keys; // unique_char = {"A", "B", "C", "D", "E"}
//get n items in character variable list
nuniquechar = N Items(unique_char); //will be 5, if categories are A, B, C, D, E
//initalize number list
num_list = {};
//create new window to create multiple number edit boxes
nw = New Window( "Set Values",
<<MODAL> // HELP:
// name a numeric variable on each iteration that will be the holder of a numeric edit box
// put the resulting ith entry into the num_list
num_list[i] = number edit box(),
// number box default is null/missing. If no input, place a missing value in the num_list
)
);<BR /><BR />// TO DO: <BR />// Create new column assigning the num_list values to <BR />// the corresponding rows based the unique character value. <BR />// Pseudo-code: <BR />// for(i in 1:nuniquechar)<BR />// if :column 1 = unique_char[i], num_list[i]<BR />//<BR />//</MODAL>這樣做的結果將是使用以下條件邏輯根據第 1 列的類別製作第 2 列的自動化和用戶友好版本。

數據表回复:如何製作 JMP 腳本來為用戶輸入創建一個新窗口,根據另一個列為列分配值我正在使用帶有數字編輯框的 << Set Function 來獲取 unique_aa 關聯數組的值。 然後在關閉模態窗口後使用該關聯數組構建所需的公式列。
Names Default To Here(1);
dt = Current Data Table();
//get the unique character variable list
col9 = Column(dt, "Column 1");
unique_char = Associative Array(col9) << get keys;
nuniquechar = N Items(unique_char); //will be 5, if categories are A, B, C, D, E
unique_aa = Associative Array(unique_char, Repeat({.}, nuniquechar)); //repeat to initialize values as missing
//create new window to create multiple number edit boxes
vlbExpr = V List Box();
For(i = 1, i <= nuniquechar, i++,
Insert Into(vlbExpr, Text Box("Number for " || Char(unique_char[i]) || ":")); //i.e. "Number for A:"
Eval(
Eval Expr(Insert Into(vlbExpr, Number Edit Box(., <<SET function=""></SET>
有關 Eval(EvalExpr()) 的信息,請參閱使用 Eval Insert、Eval Expr、Parse 和 Substitute 將一個表達式插入到另一個表達式中. 如果你想有公式
回复:如何製作 JMP 腳本來為用戶輸入創建一個新窗口,根據另一個列為列分配值這是我放在一起的一個小腳本 - 不是您可能想要一個可選的選擇器來使新列成為數字(在這裡我只是將其保留為字符)。
您必須輸入一個新的列名,並且如果新名稱當前存在於數據表中,則檢查不會運行(我知道 JMP 不會覆蓋列,但它仍然可能令人困惑)。
/* recode */
self = New Namespace();
Show( self << Get Name );
self:table = Current Data Table();
self:column = Insert( {}, self:table << Get Selected Columns );
self:column = self:column[1] << Get Name;
Show( self:column );
self:values = Associative Array( Column( self:table, self:column ) ) << Get Keys;
self:string list = {};
For( i = 1, i <= N Items( self:values ), i++,
Insert Into( self:string list, Char( i ) )
);
Eval( Eval Expr(
win = New Window( "Set Values",
<<MODAL></MODAL>回复:如何製作 JMP 腳本來為用戶輸入創建一個新窗口,根據另一個列為列分配值你考慮過列 > 重新編碼平台?可能是一個很好的低技術方式來做你想做的事。
回复:如何製作 JMP 腳本來為用戶輸入創建一個新窗口,根據另一個列為列分配值當然 - 這是我在陷入困境之前考慮過的事情。 但是我想為不太了解JMP界面的人提供一個應用程序。