JSL-Skript zum Transformieren ausgewählter SpaltenHallo, in JMP 14 möchte ich einem Benutzer erlauben, nicht spezifische Spalten auszuwählen, beispielsweise X, Y, Z, und dann ein JSL-Skript auszuführen, das neue Spalten mit der Differenz jeder Spalte generiert, dh XY, XZ, YZ.Das Skript müsste weder YX noch ZX berechnen, da diese Unterschiede bereits berechnet wurden.Wir freuen uns über jede Hilfe, danke!
Betreff: JSL-Skript zum Transformieren ausgewählter SpaltenSie könnten die Funktion Match() anstelle der Funktion If() verwenden. Besser noch, Sie könnten die Funktion Choose() verwenden, wenn Sie die Kontrollkästchen durch Optionsfelder ersetzen würden. (Die Wahl der Arithmetik scheint exklusiv zu sein.)
Betreff: JSL-Skript zum Transformieren ausgewählter SpaltenEs ist mir gelungen, dieses Skript zu erstellen.Ich war mir nicht sicher, wie ich die Transformation in eine „Wenn“-Anweisung verkürzen sollte.
@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>Betreff: JSL-Skript zum Transformieren ausgewählter SpaltenVielen Dank, Ian!Ich schätze die schnelle Antwort.Das ist es, wonach ich gesucht habe.
Was wäre, wenn ich die Dinge etwas ausgefallener machen wollte?Nehmen wir an, ich wollte dem Benutzer ermöglichen, Spalten auszuwählen (wie zuvor) und dann auch eine oder mehrere der folgenden Transformationen auswählen zu können: Addieren, Subtrahieren, Multiplizieren, Dividieren.Das Skript erstellt dann neue Spalten basierend auf den ausgewählten Transformationen.Danke !
Betreff: JSL-Skript zum Transformieren ausgewählter SpaltenHier ist eine Möglichkeit (mit Formeln):
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>
Verwenden Sie „Hilfe > Bücher > Skripthandbuch“ und „Hilfe > Skriptindex“, um zu verstehen, wie es funktioniert.