選択した列を変換するためのJSLスクリプトこんにちは、JMP 14では、ユーザーにX、Y、Zなどの非特定の列を選択させてから、各列の違いで新しい列を生成するJSLスクリプトを実行させたいと思います。XY、XZ、YZこれらの違いはすでに計算されているので、スクリプトはYXまたはZXを計算する必要はありません。 どうぞよろしくお願いします。
再:選択された列を変換するための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>
その仕組みを理解するには、[ヘルプ]> [書籍]> [スクリプトガイド]と[ヘルプ]> [スクリプトインデックス]を使用してください。
再:選択された列を変換するためのJSLスクリプトイアンさん、ありがとうございます。素早い対応に感謝します。 それが私が探していたものです。
私が物事をもう少し派手にしたい場合はどうなりますか?ユーザーが列を選択できるようにして(以前のように)、さらに追加、減算、複数、除算の変換を1つ以上選択できるようにしたいとします。 その後、スクリプトは選択した変換に基づいて新しい列を作成します。 ありがとうございました !
再:選択された列を変換するための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スクリプトIf()関数の代わりにMatch()関数を使用できます。さらに良いことに、チェックボックスをラジオボタンに置き換えればChoose()関数を使うことができます。(算術の選択は排他的であるように思えます。)