Come inserisco i valori nelle celle della tabella dati utilizzando JSL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sono relativamente nuovo in JSL, ma ho creato diversi script per gestire i processi per la generazione di tabelle e grafici per verificare che un prodotto software che stiamo producendo riporti correttamente i risultati. Uno dei problemi che sto riscontrando ora è che devo creare un grafico che mostri i tempi riportati (facile) ma rifletta anche i residui dall'intervallo temporale di reporting negli intervalli temporali futuri.
Ad esempio, devo creare un grafico del tempo di attesa in cui l'asse x va da mezzanotte a mezzanotte con intervalli di tempo discreti di 15 minuti. Ho un set di dati che riporta i tempi di attesa e raccolgo il tempo in cui inizia l'attesa. Per semplicità, seleziono una riga in cui viene segnalato un tempo di attesa di 90 minuti per un agente che entra in una sede alle 9:05. L'intervallo di tempo per tale tempo di attesa è 9:00, il tempo di attesa di 90 minuti viene segnalato e mostrato nel grafico nell'intervallo di tempo 9:00. In un grafico tradizionale, tutti gli altri tempi sarebbero zero, poiché tutti gli altri dati sono stati esclusi, ma in realtà il grafico dovrebbe mostrare il tempo di attesa dell'agente in diversi intervalli di tempo finché il tempo di attesa non diventa zero; in effetti, qual è il tempo minimo di attesa che la persona successiva che entra nella posizione può aspettarsi se arriva alla posizione dietro l'agente in attesa durante qualsiasi intervallo di tempo in cui l'agente corrente è ancora in coda.
Quindi devo creare una matrice di tutti i tempi con valori pari a zero negli intervalli temporali ad eccezione di quelli elencati di seguito.
Contenitore temporale Tempo di attesa
9:00 90 min
9:15 80 min
9:30 65 min
9:45 50 minuti
10:00 35 min
10:15 20 min
10:30 5 min
Ho già uno script che genera le colonne per ogni intervallo temporale dopo l'ultima colonna della tabella dati e ho scoperto che, a causa del numero di condizioni coinvolte e del fatto che dove, quando e quanto spesso si verificheranno tempi di attesa diversi da zero qualsiasi riga della matrice che utilizzando le formule di colonna sarebbe eccessivamente complicato, se non del tutto fattibile. Quindi speravo che esistesse un metodo per popolare le singole celle in modo da utilizzare cicli annidati per scorrere ogni riga di ciascuna colonna nella matrice e determinare quale valore del tempo di attesa dovrebbe essere inserito al suo interno.
L'altra mia opzione, che preferirei di gran lunga, sarebbe quella di creare una nuova tabella dati che includa record secondari per gestire i dati di overflow. Ad esempio, un sottoinsieme della tabella dati è composto dalle seguenti quattro righe:
| ID dell'agente | Posizione | Giorno | Orario di ingresso | Orario di uscita | Tempo di transito minimo | Tempo di attesa | Contenitore temporale |
|---|
184 | Coda di uscita | 1 | 7:10:24 | 7:10:24 | 0 | 0 | 7:00 |
| 185 | Ingresso FIS | 1 | 6:41:38 | 6:41:38 | 0 | 0 | 6 E 30 DEL MATTINO |
| 185 | Coda di visitatori | 1 | 6:41:38 | 7:00:51 | 0 | 1153 | 6 E 30 DEL MATTINO |
| 185 | Ritiro bagagli | 1 | 7:01:59 | 7:01:59 | 0 | 0 | 7:00 |
Lo script eseguirà la scansione di ogni riga nella tabella originale e la copierà nella nuova tabella dati. Nella terza riga dell'esempio precedente, il tempo di attesa totale, 1153 s, è maggiore del tempo trascorso in attesa nell'intervallo di tempo delle 6:30: intervallo di tempo delle 6:45 - 6:41:38 tempo di ingresso nella coda - 0 s di tempo di transito della coda = 202 s di attesa utilizzati nell'intervallo di tempo delle 6:30. Pertanto la nuova tabella dati aggiungerebbe righe secondarie facendo sì che la regione della tabella dati mostrata sopra appaia come segue:
| ID dell'agente | Posizione | Giorno | Orario di ingresso | Orario di uscita | Tempo di transito minimo | Tempo di attesa | Contenitore temporale |
|---|
| 184 | Coda di uscita | 1 | 7:10:24 | 7:10:24 | 0 | 0 | 7:00 |
| 185 | Ingresso FIS | 1 | 6:41:38 | 6:41:38 | 0 | 0 | 6 E 30 DEL MATTINO |
| 185 | Coda di visitatori | 1 | 6:41:38 | 7:00:51 | 0 | 1153 | 6 E 30 DEL MATTINO |
| 185 | Coda di visitatori | 1 | 6:41:38 | 7:00:51 | 0 | 951 | 6:45 |
| 185 | Coda di visitatori | 1 | 6:41:38 | 7:00:51 | 0 | 51 | 7:00 |
| 185 | Ritiro bagagli | 1 | 7:01:59 | 7:01:59 | 0 | 0 | 7:00 |
Le righe in corsivo sono le righe secondarie dell'Agente 185 nella Coda visitatori che mostrano i tempi di attesa rimanenti fino a quando l'Agente 185 non avrà più alcuna attesa nella Coda visitatori. Potrei quindi utilizzare questa tabella per generare il grafico di cui ho bisogno perché i record secondari fornirebbero i dati aggiuntivi necessari.
Se qualcuno potesse fornire un metodo per una di queste soluzioni, sarebbe molto apprezzato.
Ri: Come inserisco i valori nelle celle della tabella dati utilizzando JSLGrazie Ron.
Buono a sapersi. Quelle righe sembravano estranee, ma poiché JSL è un linguaggio di scripting e ho appena iniziato a creare i miei script, in realtà utilizzo le funzionalità di scripting di JMP da alcuni anni, ma si trattava principalmente di salvare gli script in una tabella di dati da una piattaforma ed eseguendo alcune modifiche quando necessario: non ero sicuro se o cosa stesse facendo in relazione all'aggiunta delle righe. All'inizio, avevo la folle ipotesi che potesse avere qualcosa a che fare con la precompilazione delle righe, mi sono reso conto che Aggiungi riga lo stava facendo in modo non documentato.
A proposito, secondo la Guida allo scripting JMP, Aggiungi righe ( numero ) aggiunge quanto specificato numero di righe, ma il ciclo interno aggiunge una nuova riga alla volta in base alla durata dell'evento e copia i valori della colonna nella riga di origine, contenuta come elenco in rowi , nella nuova riga. Complimenti a te per aver scoperto questa capacità non documentata. Questo è stato uno dei motivi per cui sono rimasto bloccato, poiché ho una notevole esperienza di programmazione e spesso riesco a capire un nuovo linguaggio purché la sintassi sia ben documentata. Nulla di ciò che ho trovato nella documentazione di JMP menziona che la funzione Aggiungi righe può accettare come parametro una variabile contenente l'elenco dei valori di colonna per una riga specifica.
Ri: Come inserisco i valori nelle celle della tabella dati utilizzando JSLciao MD,
sono felice che il mio script ti sia stato utile. quando l'ho scritto il componente aggiuntivo non era disponibile.
per quanto riguarda la z; l'ho appena controllato adesso e non è necessario. il ciclo dovrebbe funzionare bene senza di esso. Pensavo che dovessi avere la z nel ciclo for per poter contare le volte che passa.
durante il test dello script mi ha aiutato a controllarne l'azione avendo sempre a disposizione il numero del loop.
Migliore,
Ron.
Ri: Come inserisco i valori nelle celle della tabella dati utilizzando JSLDomanda.
Nel blocco di codice in cui crei nuove righe in base alla durata dell'evento,
Per ( io = 1 , io <= rigaN , io ++,
rowi = dt << ottieni riga ( io ) ;
Per ( z = 1 , z <= ( : Nome ( "Durata dell'evento" )[ io ] - 1 ) , z ++,
z ;
dt << Aggiungi riga ( rowi ) ;
dt << eseguire formule ;
) ;
) ;
cosa significa la linea giusta? z ; Fare?
Ri: Come inserisco i valori nelle celle della tabella dati utilizzando JSLRon,
Grazie per le informazioni. Il componente aggiuntivo non ha funzionato nel mio caso, ma la revisione del codice per il problema del grafico a bolle ha risolto il problema che stavo riscontrando. Ci è voluto tutto il giorno per creare lo script di cui avevo bisogno, ma il codice che hai fornito per aggiungere righe secondarie per colmare le lacune nei dati mi ha aiutato a completare quello che altrimenti sarebbe rimasto un vicolo cieco per un bel po' di tempo.
Ri: Come inserisco i valori nelle celle della tabella dati utilizzando JSLCiao MD,
Non sono sicuro di aver compreso appieno la tua domanda, ma prova questi due link:
1) Espandi per componente aggiuntivo Colonna frequenza
2) grafici a bolle: intervalli di tempo disuguali