Comment créer un script JMP pour créer une nouvelle fenêtre pour les entrées utilisateur attribuant des valeurs à une colonne en fonction d'une autre colonneSalut,
Je suis bloqué sur une partie spécifique de mon script JMP et j'espère obtenir de l'aide d'un autre œil.
J'ai un ensemble de données qui ressemble à ceci, mais avec beaucoup plus de catégories, chacune avec des noms plus longs.

Je souhaite créer une autre colonne, avec des valeurs numériques, basée sur la colonne donnée. Ce produit doit être entièrement automatisé, avec une fenêtre contextuelle avec chacune des catégories répertoriées, avec des zones d'édition de numéros dans lesquelles l'utilisateur peut saisir les valeurs numériques qui correspondront à une catégorie. Par exemple:
Boîte de fenêtre contextuelle : nouvelle fenêtre avec toutes les invites dans la boîte de fenêtre contextuelle.
Saisir la valeur correspondant à A : ___1___ Saisir la valeur correspondant à B : ___2___ Saisir la valeur correspondant à C : ___3___ Saisir la valeur correspondant à D : ___4___ Saisir la valeur correspondant à E : ___5___ |
Le tableau de données résultant devrait ressembler à ceci :

Vous trouverez ci-dessous le script JMP que j'ai actuellement. J'ai également téléchargé le fichier JMP sur ce post. Ce pour quoi j'ai besoin d'aide, c'est texte rouge ci-dessous. J'ai du mal à attribuer la ième valeur dans la boucle for, en fonction de la saisie de l'utilisateur et correspondant à la ième catégorie unique de la liste, caractère_unique , à la ième position dans la liste numérique initialisée, num_list , qui sera utilisé plus tard dans la prochaine boucle for pour créer la colonne 2 (à la fin du script JMP ci-dessous).
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>Les résultats seront la version automatisée et conviviale de l'utilisation de la logique conditionnelle suivante pour créer la colonne 2 basée sur les catégories de la colonne 1.

Ingénierie Qualité et ProcédésRe : Comment créer un script JMP pour créer une nouvelle fenêtre pour la saisie utilisateur attribuant des valeurs à une colonne en fonction d'une autre colonneBien sûr, c'est quelque chose que j'avais pensé faire avant de me retrouver coincé. Mais je souhaite avoir une application pour les personnes qui ne connaissent pas très bien l'interface JMP.
Re : Comment créer un script JMP pour créer une nouvelle fenêtre pour la saisie utilisateur attribuant des valeurs à une colonne en fonction d'une autre colonneAvez-vous considéré le Cols > Recoder plate-forme?Cela pourrait être un bon moyen low-tech de faire ce que vous voulez.
Re : Comment créer un script JMP pour créer une nouvelle fenêtre pour la saisie utilisateur attribuant des valeurs à une colonne en fonction d'une autre colonneVoici un petit script que j'ai mis en place - vous ne voudrez peut-être pas qu'un sélecteur facultatif rende la nouvelle colonne numérique (ici, je la laisse simplement sous forme de caractère).
Vous devez entrer un nouveau nom de colonne et une vérification est effectuée pour ne pas s'exécuter si le nouveau nom existe actuellement dans la table de données (je sais que JMP n'écrasera pas une colonne, mais cela peut toujours prêter à confusion).
/* 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>Re : Comment créer un script JMP pour créer une nouvelle fenêtre pour la saisie utilisateur attribuant des valeurs à une colonne en fonction d'une autre colonneJ'utilise << Set Function avec la zone d'édition de nombre pour obtenir les valeurs du tableau associatif unique_aa. Utilisez ensuite ce tableau associatif pour créer la colonne de formule nécessaire, après avoir fermé la fenêtre modale.
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>
Pour plus d'informations sur Eval(EvalExpr()), voir Insérez une expression dans une autre à l'aide d'Eval Insert, Eval Expr, Parse et Substitute . Et si tu veux avoir une formule