Trova la differenza di tempo tra le righeCiao,
Sto lavorando alla configurazione di uno script. Uno dei passaggi è determinare se il 'Timestamp' è entro 30 minuti dalla riga sopra o sotto, con loro in ordine sequenziale per UCN. Ovviamente, ho bisogno che questo includa la data e l'ora. Di seguito è riportato lo script/la formula che sto utilizzando. Ma quando lo faccio, guarda solo gli orari e non tiene conto dell'UCN o della data. Puoi vedere nella mia colonna '30 minuti' che non identifica correttamente.
Questo è impostato in modo che gli UCN siano quelli entro 5 cifre l'uno dall'altro. Ma poi ho bisogno di determinare se quegli UCN hanno un timestamp entro 30 minuti da quelli che sono entro le 5 cifre. Spero che abbia senso. Quindi se guardi le righe 12 e 13, dice che sono una corrispondenza in base al timestamp, ma non lo sono perché hanno codici centro diversi e gli UCN non sono distanti 5 cifre. Le righe 11 e 12 sono entro 5 cifre per l'UCN, ma l'ora è distante più di 30 minuti, quindi non dovrebbe essere identificata come '1'/rosso nella colonna 'ora entro 30'.
// New column: Time within 30
Data Table("Time within 30 minutes") << New Column("Time within 30",
Numeric,
"Continuous",
Format("Best", 12),
Formula(
If(
Dif(Num(:Unit Entry Timestamp), 1) <= 30 | Abs(Dif(Num(:Unit Entry Timestamp), -1))
<= 30,
1,
0
)
)
) << Move Selected Columns({:Time within 30}, after(:Positive or Negative));
// Change column info: Time within 30
Data Table("Time within 30 minutes"):Time within 30 <<
Set Property("Value Colors", {0 = 2, 1 = 3}) << Color Cell by Value(1);
Automazione e scriptingEsplorazione e visualizzazione dei datiFinestreRe: Trova la differenza di tempo tra le righeCrea una nuova colonna in cui combini data e ora (data + ora) e poi correggi il tuo Pos UCN in numerico se sono numeri. Quindi dovresti essere in grado di usare un'idea simile a quella che hai per il tuo confronto temporale con Pos UCN e con la nuova colonna timestamp.
Re: Trova la differenza di tempo tra le righeRicordatevi anche di fare confronti in secondi, perché è così che JMP gestisce il tempo. Potete ad esempio usare In Minutes(30) per convertire 30 minuti in secondi (o usare semplicemente 30*6)
Re: Trova la differenza di tempo tra le righeHo bisogno che rimangano valori di carattere perché ho bisogno degli 0 iniziali.
Re: Trova la differenza di tempo tra le righeOk, in tal caso crea una nuova colonna numerica oppure usa Num per la conversione (ovviamente la differenza di 5 cifre può significare qualcos'altro oltre alla differenza numerica tra di esse).
Puoi fornire tutte le regole che hai in ordine di importanza, ad esempio non sono sicuro di come i codici dei centri siano correlati a questo (li hai menzionati)
- Vuoi trovare le righe che hanno valori UNC con una differenza massima di 5 (suppongo che questo significhi avere 5 cifre di differenza)
- Quindi vuoi valori che siano distanti al massimo 30 minuti durante il riempimento della regola 1
- Codici centrali?
- Qualunque altra cosa?
Re: Trova la differenza di tempo tra le righeLe regole che hai impostato sono abbastanza corrette. Il codice centrale è solo l'identificatore per ogni centro. Il codice centrale è costituito dalle prime 3 cifre dell'UCN, se può essere utile. Ce l'ho già nel mio script e nel file principale (che è enorme) per filtrare da circa 12k righe a queste 120. Quello esegue gli UCN entro 5 cifre.
Il passo successivo è determinare se gli UCN simili hanno un timestamp entro 30 minuti l'uno dall'altro (per lo stesso centro e entro 5 cifre dall'UCN). Questo è ciò che sto cercando di capire come fare. La formula che sto usando al momento e che non funziona dovrebbe essere elencata nell'opzione formula colonna nella tabella che ho caricato in precedenza.
Re: Trova la differenza di tempo tra le righeNon sono sicuro che questa formula sia corretta poiché è in forte disaccordo con la tua formula
Current Data Table() << New Column("R", Numeric, Nominal, Formula(
If(:Center Code == Lag(:Center Code) | :Center Code == Lag(:Center Code , -1),
If(Min(Abs(Dif(Num(:Pos UCN))), Abs(Dif(Num(:Pos UCN), -1))) <= 5,
Min(Abs(Dif(:Unit Entry Timestamp)), Abs(Dif(:Unit Entry Timestamp, -1))) <= In Minutes(30)
,
0
)
,
0
);
));

Re: Trova la differenza di tempo tra le righeQuesta è la formula che devo usare per ottenere il mio risultato entro 5 colonne
Se( Dif( Num( :Pos UCN ), 1 ) <= 5 | Abs( Dif( Num( :Pos UCN ), -1 ) ) <= 5,
1,
0
)
Re: Trova la differenza di tempo tra le righeMi sono appena accorto che non avevo incluso quella colonna nella mia domanda originale.
Re: Trova la differenza di tempo tra le righeQuesta formula era ESATTAMENTE ciò di cui avevo bisogno!!!!! Grazie!!!