Come posso creare una colonna formula con date/turni personalizzati?Sto lavorando ad un'analisi relativa alla struttura dei turni di lavoro. Operiamo 12 ore per turno. Ciò significa che lavoriamo dalle 7:00 alle 19:00 (turno diurno, D) e dalle 19:00 alle 7:00 (turno notturno, N).
Attualmente ho uno script di colonne formula come segue:
"WW" || Char (Week of Year (:date)) || "." || Char (Day of week (:date) - 1) ||
If (Hour (:date) <= 19 & Hour(:date) >= 7, "D", "N")
Sembra che non funzioni come mi aspettavo bcs in base a questo script, passava al nuovo giorno ogni volta che l'ora raggiungeva le 00:00.
Per esempio:
Lo script convertirà il 01/12/2020 5:49:47 in WW49.2N. Dovrebbe essere WW49.1N. WW49.2D inizia quando la data e l'ora sono 01/12/2020 7:00:00 AM. Questo perché l'orario per il turno di notte è dalle 19:00 alle 7:00. Qualcuno può suggerire o consigliare un modo alternativo per creare lo script?
Modellazione statistica avanzataAutomazione e scriptingRicerche sui consumatori e sul mercatoProgettazione di esperimentiRe: Come faccio a creare una colonna formula con date/turno personalizzati?I tuoi turni sono dalle 7:00 alle 19:00 D e dalle 19:00 alle 7:00 N.Se l'orario per il turno notturno del 2° giorno è oltre la mezzanotte, JMP restituirà il giorno (:date) restituirà il giorno 3, poiché JMP misura i giorni in base alla mezzanotte.Tuttavia, se per i calcoli spostiamo il valore :date indietro di 7 ore, ciò significherà che il turno di notte sarà da mezzogiorno a mezzanotte e non oltrepasserà mai il confine del giorno JMP.
Re: Come faccio a creare una colonna formula con date/turno personalizzati?Vedo che jmp calcola sempre in secondi. a proposito @txnelson potresti spiegare perché dobbiamo sottrarre 7 ore (25.200 secondi) dal tempo effettivo?
La condizione programmata dice che in qualsiasi momento tra le 00:00 e le 12:00 è il giorno ("D")
Re: Come faccio a creare una colonna formula con date/turno personalizzati?Sottrae 25200 secondi dal valore specificato per la colonna Data per la riga corrente.
25200 = 60 secondi al minuto X 60 minuti all'ora X 7 ore
Inoltre, ho commesso un leggero errore nella mia formula.Il confronto If() dovrebbe avere un confronto "<" per il secondo elemento, non "<="
correctedDate = :date - In Hours( 7 );
"WW" || Char( Week Of Year( correctedDate ) ) || "." || Char( Day Of Week( correctedDate ) - 1 ) ||
If( Hour( correctedDate ) >= 0 & Hour( correctedDate ) < 12,
"D",
"N"
);
Re: Come faccio a creare una colonna formula con date/turno personalizzati?volevo solo confermare, quando dici - In ore( 7 ) significa substrato 7 ore?
Re: Come faccio a creare una colonna formula con date/turno personalizzati?Penso che il modo migliore per gestirlo sia correggere i valori della data e dell'ora sottraendo 7 ore, il che fa allineare i turni con i valori del giorno
correctedDate = :date - In Hours( 7 );
"WW" || Char( Week Of Year( correctedDate ) ) || "." || Char( Day Of Week( correctedDate ) - 1 ) ||
If( Hour( correctedDate ) >= 0 & Hour( correctedDate ) <= 12,
"D",
"N"
);
R: Come posso creare una colonna formula con date/turni personalizzati?Questo è interessante, poiché avresti potuto scambiare le posizioni di >= e < nella formula:
correctedDate = :date - In Hours( 7 );
"WW" || Char( Week Of Year( correctedDate ) ) || "." || Char( Day Of Week( correctedDate ) - 1 ) ||
If( 0 < Hour( correctedDate ) <= 12,
"D",
"N"
);
Sto lavorando a un problema simile e l'assegnazione del turno di notte rispetto a quello di giorno è leggermente diversa, a seconda della posizione relativa dei simboli < e <= nell'istruzione if. Sarebbe fantastico consentire l'uso diretto dei timestamp all'interno della formula if (se l'ora è > 12:00:00...). Forse è così, non ho approfondito a sufficienza.
Tuttavia, la mia domanda principale è: come avete deciso dove posizionare i simboli < e <=? Naturalmente, è importante avere una suddivisione equa di 12 ore per turno, ma questo potrebbe essere ottenuto con entrambe le configurazioni (< prima di <= e <= prima di <).
R: Come posso creare una colonna formula con date/turni personalizzati?Le 19:00 sono l'inizio del nuovo turno, che corrisponde a hour() 19. Dato che stiamo considerando un offset di 7 ore, il valore di Hour() che dà inizio al turno di notte è 19-7, ovvero 12. Se il confronto fosse <=, un valore orario pari esattamente a 12 sarebbe considerato un turno diurno.
R: Come posso creare una colonna formula con date/turni personalizzati?Grazie, me ne sono accorto più tardi, mentre armeggiavo con il mio file, naturalmente dopo aver pubblicato la mia domanda non proprio ponderata. Grazie per la pazienza.