Domanda di script JMP<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sono un nuovo utente che sta cercando di imparare lo script JMP. Ho uno script molto semplice ma ho riscontrato un risultato previsto. Qualcuno potrebbe darmi un segnale su cosa ho fatto di sbagliato qui. Grazie in anticipo. (BTW: sto usando JMP 8.02)
Ho una tabella molto semplice come sotto (test1.csv):
| Tool_first | Tool_second | Process_time | Tool_third | Gruppo 1 | Real_beta | Base |
| UN | C | Il 4/3/2011 0:53 | E | AE | 0,0058 | Y |
| UN | C | Il 4/3/2011 a 1:08 | E | AE | 0,0058 | Y |
| UN | C | 4/3/2011 5:27 | E | AE | 0,0058 | Y |
| UN | C | 4/3/2011 6:26 | E | AE | 0,0058 | Y |
| UN | D | 4/3/2011 6:39 | E | AE | 0,0058 | Y |
| UN | C | 4/3/2011 6:49 | E | AE | 0,0058 | Y |
| UN | C | 3/3/2011 18:43 | E | AE | 0,0058 | Y |
| UN | C | 4/3/2011 23:42 | E | AE | 0,0058 | Y |
| UN | C | 4/4/2011 5:20 | E | AE | 0,0058 | Y |
| UN | C | 4/4/2011 8:34 | E | AE | 0,0058 | Y |
| UN | C | 4/4/2011 10:43 | E | AE | 0,0058 | Y |
| UN | D | 4/4/2011 11:02 | E | AE | 0,0058 | Y |
| UN | C | 4/4/2011 13:57 | E | AE | 0,0058 | Y |
| UN | C | 4/4/2011 14:28 | E | AE | 0,0058 | Y |
| UN | D | 4/4/2011 16:43 | E | AE | 0,0058 | Y |
| UN | C | 4/4/2011 20:01 | E | AE | 0,0058 | Y |
| UN | C | 4/4/2011 20:17 | E | AE | 0,0058 | Y |
| UN | D | 4/4/2011 21:45 | E | AE | 0,0058 | Y |
| UN | C | 4/5/2011 18:20 | E | AE | 0,0058 | Y |
| UN | D | 4/5/2011 20:02 | E | AE | 0,0058 | Y |
| UN | C | 4/5/2011 20:35 | E | AE | 0,0058 | Y |
Lo script seguente viene letto nel file .csv e aggiunto altre due colonne alla tabella in base al confronto di una riga con la riga precedente. La mia sceneggiatura è sotto
Source_Table = Open ("c: \ test1.csv");
Source_Table << Sort (By (group_1, process_time), order (Ascending), Replace Table);
nuova colonna ("Inspect_pt",
formula(
se (riga () == 1,1,
(: group_1 [row ()]! =: group_1 [row () - 1]), 1,
(: group_1 [row ()] ==: group_1 [row () - 1]), 0)));
nuova colonna ("tool_Change",
formula(
se (riga () == 1,1,
(: tool_second [row ()]! =: tool_second [row () - 1]), 1,
(: tool_second [row ()] ==: tool_second [row () - 1]), 0
)
)
);
mostra (tabella dei dati corrente ());
/ * prova ad emettere il valore delle ultime due colonne * /
per (i = 1, i ,: Tool_Change ););
La tabella dei risultati è OK ma l'ultima riga dello script non ha restituito alcun risultato sulle due colonne appena create. La finestra di registro mostra che l'indice diventa :: i.
Tabella di uscita:
[Immagine mancante]
Ma la finestra di registro mostrava il risultato delle ultime due colonne non tirate correttamente. Ho usato l'indicizzazione sbagliata? Registra l'output della finestra qui:
Tabella dati corrente: DataTable ("test1")
i: 1
Fila: 1
: Inspect_pt [:: i] :. <- questo non è corretto
: Tool_Change [:: i] :. <- questo non è corretto
i: 2
Fila: 2
: Inspect_pt [:: i] :.
: Tool_Change [:: i] :.
i: 3
Fila: 3
: Inspect_pt [:: i] :.
: Tool_Change [:: i] :.
I: 4
Fila: 4
: Inspect_pt [:: i] :.
: Tool_Change [:: i] :.
Domanda di script JMPGrazie a tutti per le preziose informazioni. Questo forum è fantastico.
Domanda di script JMPCiò diventa particolarmente importante quando si scrivono script che utilizzano valori di processi precedenti per determinare come procedere (ad es Selezionare Dove (: tool_change == 1) per sottoporre a sottoinsieme). Inserendo una linea di 'run formule' alla fine di un blocco di codice come questo, si dice a JMP di mettere in pausa, valutare tutte le formule in sospeso e quindi procedere con il resto dello script.
Non ho familiarità con il comportamento di 'eval formula' (di solito uso 'run formula' - solo una questione di abitudine), quindi questa è una speculazione, ma a seconda dei processi specifici potrei vedere differenze situazionali che favorirebbero ' formula eval 'over' eseguire le formule '(cioè dove ti interessa solo una formula per prendere una decisione, puoi istruire solo quella formula per valutare, salvando le valutazioni della formula rimanenti per dopo). La differenza qui dipenderebbe davvero da quante valutazioni di formule devi fare e quando vuoi che siano fatte.
Domanda di script JMPCiao
JMP non termina un "comando" prima di passare a quello successivo - legge il comando "nuova colonna" e inizia a eseguirlo, ma continua a leggere ed eseguire i comandi successivi.
Quello che succede qui è che i comandi 'Nuova colonna' non sono finiti in esecuzione (questo tipo di comando richiede un po 'di tempo perché la grafica deve essere aggiornata), prima che JMP legga la linea finale con i comandi' mostra ', quindi non ci sono valori nelle colonne al momento dell'esecuzione di questo comando.
O "svuota" le formule come sopra o metti una "formula eval" direttamente nel comando "nuova colonna", ad es
nuova colonna ("titolo", numerico, formula (: X1 *: X2), formula eval);
Per quanto ho capito, i due approcci hanno lo stesso effetto.
BR, Marianne
PS: non sono di JMP
Domanda di script JMPCiao HY,
Non sono sicuro del motivo per cui hai bisogno di questa affermazione, l'ho ottenuta dal supporto tecnico di JMP. Forse qualcuno da JMP potrebbe spiegare?
Saluti,
Peter
Domanda di script JMPGrazie a PMroz. Questo ha fatto il trucco. Per il mio beneficio, puoi elabrate per favore cosa stava succedendo e perché è necessaria la linea aggiuntiva per farlo funzionare. Grazie ancora
Domanda di script JMPProva a "svuotare" il buffer delle formule di JMP con questa affermazione:
Source_Table << esegue le formule;
Aggiungi questa riga dopo le definizioni della formula.