Script JSL pour transformer les colonnes sélectionnéesBonjour, dans JMP 14, j'aimerais permettre à un utilisateur de sélectionner des colonnes non spécifiques, par exemple X, Y, Z, puis d'exécuter un script JSL qui génère de nouvelles colonnes avec la différence de chaque colonne, c'est-à-dire XY, XZ, YZ.Le script n'aurait pas besoin de calculer YX ou ZX puisque ces différences ont déjà été calculées.Toute aide est appréciée, merci!
Re : Script JSL pour transformer les colonnes sélectionnéesVous pouvez utiliser la fonction Match() au lieu de la fonction If(). Mieux encore, vous pouvez utiliser la fonction Choose() si vous remplacez les cases à cocher par des boutons radio. (On dirait que le choix de l'arithmétique est exclusif.)
Re : Script JSL pour transformer les colonnes sélectionnéesJ'ai pu créer ce script.Je ne savais pas comment raccourcir la transformation en une instruction « 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>Re : Script JSL pour transformer les colonnes sélectionnéesMerci beaucoup Ian!J'apprécie la réponse rapide.C'est ce que je cherchais.
Et si je voulais rendre les choses un peu plus sophistiquées ?Disons que je voulais permettre à l'utilisateur de sélectionner des colonnes (comme avant) et ensuite également de pouvoir choisir 1 ou plusieurs des transformations suivantes : ajouter, soustraire, multiple, diviser.Le script créerait alors de nouvelles colonnes en fonction des transformations sélectionnées.Merci !
Re : Script JSL pour transformer les colonnes sélectionnéesVoici une façon (en utilisant des formules) :
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>
Utilisez « Aide > Livres > Guide de script » et « Aide > Index de script » pour comprendre son fonctionnement.