用於轉換選定列的 JSL 腳本您好,在 JMP 14 中,我希望允許使用者選擇非特定列,例如 X、Y、Z,然後執行 JSL 腳本,該腳本產生具有每列差異的新列,即 XY、XZ、YZ。該腳本不需要計算 YX 或 ZX,因為這些差異已經計算出來。任何幫助表示讚賞,謝謝!
回覆:用於轉換選定列的 JSL 腳本您可以使用 Match() 函數而不是 If() 函數。 更好的是,如果您用單選按鈕替換複選框,則可以使用 Choose() 函數。 (似乎演算法的選擇是排他性的。)
回覆:用於轉換選定列的 JSL 腳本我能夠想出這個腳本。不確定如何將轉換縮短為“if”語句。
@ian_jmp
NamesDefaultToHere(1);
// Make a table to use
nr = 100; // Number of rows
nc = 10; // Number of columns
dt = AsTable(J(nr, nc, RandomNormal()));
dt << setName("Example Data");
// Make a UI to allow selection of columns from the current data table
dt = CurrentDataTable();
nw = NewWindow("New Column Transforms",
TextBox("Select all transforms to perform", << fontColor("Blue")),
VListBox(
cb=CheckBox({"Plus","Minus","Times","DivideBy"},
Print(
"Selected: " || Concat Items(cb <<GETSELECTED></GETSELECTED>回覆:用於轉換選定列的 JSL 腳本非常感謝伊恩!我很欣賞您的快速回覆。這就是我一直在尋找的。
如果我想讓事情變得更奇特怎麼辦?假設我希望允許使用者選擇列(像以前一樣),然後還能夠選擇以下轉換中的 1 個或多個:加、減、乘、除。然後,該腳本將根據所選的轉換建立新列。謝謝 !
回覆:用於轉換選定列的 JSL 腳本這是一種方法(使用公式):
NamesDefaultToHere(1);
// Make a table to use
nr = 100; // Number of rows
nc = 10; // Number of columns
dt = AsTable(J(nr, nc, RandomNormal()));
dt << setName("Example Data");
// Make a UI to allow selection of columns from the current data table
dt = CurrentDataTable();
nw = NewWindow("Difference of Columns",
TextBox("Select columns:", << fontColor("Blue")),
clb = ColListBox(all, numeric),
LineUpBox(NCol(2),
ButtonBox("OK", OKscript),
ButtonBox("Cancel", nw << closeWindow)
);
);
nw << setWindowSize(300, 300);
// This script runs if the user hits 'OK'
OKScript =
Expr(
nw << closeWindow;
// Get which columns were selected
colList = clb << getSelected;
// Define a formula column for each pairwise difference
for(c1=2, c1<=NItems(colList), c1++,
for(c2=1, c2<C1></C1>
使用「幫助 > 書籍 > 腳本指南」和「幫助 > 腳本索引」來了解其工作原理。