Come creare uno script JMP per creare una nuova finestra per l'input dell'utente assegnando valori a una colonna in base a un'altra colonnaCiao,
Sono bloccato su una parte specifica del mio script JMP e spero di ricevere aiuto da un paio di occhi diversi.
Ho un set di dati simile a questo, ma con molte più categorie, ciascuna con nomi più lunghi.

Voglio creare un'altra colonna, con valori numerici, in base alla colonna specificata. Questo prodotto deve essere completamente automatizzato, con una finestra pop-up con ciascuna delle categorie elencate, con caselle di modifica dei numeri in cui l'utente può inserire i valori numerici che corrisponderanno a una categoria. Per esempio:
Finestra pop-up: nuova finestra con tutte le istruzioni nella finestra pop-up.
Inserisci il valore corrispondente ad A: ___1___ Inserisci il valore corrispondente a B: ___2___ Inserisci il valore corrispondente a C: ___3___ Inserisci il valore corrispondente a  ___4___ Inserisci il valore corrispondente a E: ___5___ |
La tabella dati risultante dovrebbe assomigliare a questa:

Di seguito è riportato lo script JMP che ho in questo momento. Ho anche caricato il file JMP in questo post. Quello per cui ho bisogno di aiuto è dentro testo rosso sotto. Ho problemi ad assegnare il valore i-esimo nel ciclo for, in base all'input dell'utente e corrispondente alla categoria univoca i-esimo nell'elenco, carattere_unico , alla i-esima posizione nell'elenco numerico inizializzato, elenco_num , che verrà utilizzato più avanti nel ciclo for successivo per creare la colonna 2 (alla fine dello script JMP di seguito).
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>Il risultato sarà la versione automatizzata e intuitiva dell'utilizzo della seguente logica condizionale per creare la colonna 2 in base alle categorie della colonna 1.

Ingegneria della qualità e dei processiRi: Come creare uno script JMP per creare una nuova finestra per l'input dell'utente assegnando valori a una colonna in base a un'altra colonnaDi sicuro, è qualcosa che pensavo di fare prima di rimanere bloccato. Ma voglio avere un'applicazione per le persone che non conoscono molto bene l'interfaccia JMP.
Ri: Come creare uno script JMP per creare una nuova finestra per l'input dell'utente assegnando valori a una colonna in base a un'altra colonnaHai considerato il Cols > Ricodifica piattaforma?Potrebbe essere un buon modo a bassa tecnologia per fare quello che vuoi.
Ri: Come creare uno script JMP per creare una nuova finestra per l'input dell'utente assegnando valori a una colonna in base a un'altra colonnaEcco un piccolo script che ho messo insieme: non potresti volere un selettore opzionale per rendere numerica la nuova colonna (qui la lascio semplicemente come carattere).
Devi inserire un nuovo nome di colonna e c'è un controllo da non eseguire se il nuovo nome esiste attualmente nella tabella dati (so che JMP non sovrascriverà una colonna, ma può comunque creare confusione).
/* 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>Ri: Come creare uno script JMP per creare una nuova finestra per l'input dell'utente assegnando valori a una colonna in base a un'altra colonnaSto utilizzando << Imposta funzione con la casella di modifica del numero per ottenere i valori nell'array associativo unique_aa. Quindi utilizzare l'array associativo per creare la colonna della formula necessaria, dopo aver chiuso la finestra 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>
Per informazioni su Eval(EvalExpr()) vedere Inserisci un'espressione in un'altra utilizzando Eval Insert, Eval Expr, Parse e Substitute . E se vuoi avere la formula