Come calcolare il numero di giorni lavorativi?Ciao comunità
Ho bisogno del tuo aiuto e dei tuoi consigli ancora una volta. Da nuovo utente faccio fatica ad imparare.
Ho una tabella dati con data di inizio e data di fine. Vorrei calcolare il numero di giorni lavorativi tra la data di inizio e quella di fine ?? Qual è il modo migliore per farlo in JMP? La mia idea è aggiungere una colonna e creare una formula, ad esempio Differenza di data?? Ma non sono sicuro di quale sarebbe l'opzione migliore.
vedere l'esempio allegato

Grazie
Martino
Modellazione statistica avanzataPersonalizzazione di massaRi: Come calcolare il numero di giorni lavorativi?Ciao Jerry
questo è stato davvero utile Ho creato la mia lista e ora mostrava ciò che vorrei.
Grazie
Martino
Ri: Come calcolare il numero di giorni lavorativi?CIAO @Martinej ,
Qualche tempo fa ho scritto un componente aggiuntivo che calcola il numero di giorni lavorativi tra due colonne di date. Le festività e qualsiasi altro giorno specifico che si desidera escludere vengono gestiti mantenendo un file Holiday List.jmp memorizzato nella directory del componente aggiuntivo. Nota: questo file potrebbe essere qualsiasi documento (Excel, .txt, .csv, ecc.) mantenuto in qualsiasi posizione accessibile dal computer dell'utente JMP, tuttavia, ciò richiederebbe una piccola modifica al JSL sottostante per fornire la posizione del file. Altrimenti, credo che soddisfi la tua esigenza richiesta così com'è. Seguire le istruzioni per scaricare, installare e modificare il file Elenco festività: Funzione GIORNI LAVORATIVI RETE
Spero che questo ti aiuti,
Jerry
Ri: Come calcolare il numero di giorni lavorativi?Il mio preferito è il vecchio North Carolina vacanza di baseball .
Ri: Come calcolare il numero di giorni lavorativi?Per aggiungere un po' di più @Craige_Hales 'sabbia @Jeff_Perkinson pensieri sulle festività ecc., hai menzionato pensieri sulla contabilizzazione delle "festività locali". Ciò diventa davvero difficile a meno che non si adotti una definizione standard di "locale". Ad esempio, il Canada ha una festa del “Ringraziamento”, proprio come gli Stati Uniti. Solo che è un giorno diverso sul calendario per il Canada rispetto agli Stati Uniti. E non farmi nemmeno iniziare a livello di città o stato negli Stati Uniti. Ad esempio, negli stati del Maine e del Massachusetts, il Patriot's Day è una festa che non viene celebrata in nessun'altra parte degli Stati Uniti. Per rendere la situazione ancora più difficile, alcune attività chiudono... altre rimangono aperte. Banche e istituzioni finanziarie incluse.
Ri: Come calcolare il numero di giorni lavorativi?lavorare con la codifica è nuovo per me e non mi sembra di farlo funzionare. tuttavia ho giocato con alcune delle formule standard e ho trovato una soluzione. che però utilizzano solo giorni solari e non lavorativi. Per questo esperimento è abbastanza buono purché sia lo stesso per il confronto.
Ri: Come calcolare il numero di giorni lavorativi?La soluzione semplice sarebbe estendere l'espressione di test.
// define an expression that answers the question
holidays = associativearray({1jan2020,25dec2020});
includeThisDate = Expr(
(2/*monday*/<= Day Of Week( date ) <= 6/*friday*/)
&
!(holidays<<CONTAINS></CONTAINS>Nel 2020 Capodanno e Natale cadono nei giorni feriali, quindi 260 anziché 262. In futuro dovrai aggiornare l'array associativo e potresti aver bisogno anche di dati storici. Alcune festività non cadono nello stesso giorno ogni anno. Che brutto problema, che porta a...
Una soluzione complicata potrebbe utilizzare qualcosa di simile https://www.abstractapi.com/holidays-api
(Credito a @Jeff_Perkinson per Modifica di una colonna di data e ora per restituire solo la data.)
Ri: Come calcolare il numero di giorni lavorativi?sì, i giorni lavorativi sono tutti i giorni feriali (lunedì-venerdì), sarebbe meglio se potessi adattarmi anche alle festività locali
eventuali suggerimenti?
Ri: Come calcolare il numero di giorni lavorativi?Anche altre domande: le date JMP includono sempre un'ora, spesso impostata su zero secondi dopo la mezzanotte. Ma se l'intervallo va da lunedì a mezzogiorno a lunedì a mezzogiorno 7 giorni dopo, come vuoi contare i due mezzi lunedì? Oppure, anche se è mezzanotte all'inizio di lunedì, dovrebbero essere conteggiati entrambi?
Contare i giorni potrebbe non essere una cattiva scelta se gli intervalli sono piccoli e non troppi (segue il codice scarsamente testato):
// define an expression that answers the question
includeThisDate = Expr(
2/*monday*/<= Day Of Week( date ) <= 6/*friday*/
);
// brute force counting:
countSelectedDaysInRange = Function( {firstDate, lastDate, testexpr},
{date, count},
If( lastDate < firstDate,
Throw( "dates reversed" )
);
count = 0;
For( date = firstDate, date <= lastDate, date += In Days( 1 ),
count += (testexpr != 0)
);
count;
);
Show( 262 == countSelectedDaysInRange( 1jan2020, 31dec2020, Name Expr( includeThisDate ) ) );
Show( 104 == countSelectedDaysInRange( 1jan2020, 31dec2020, Expr( !(2/*monday*/<= Day Of Week( date ) <= 6/*friday*/) ) ) );
Show( 366 == countSelectedDaysInRange( 1jan2020, 31dec2020, 1 ) );// 2020 is leap year
Show( 0 == countSelectedDaysInRange( 1jan2020, 31dec2020, 0 ) );// no days counted262 == countSelectedDaysInRange(01gen2020, 31dic2020, Name Expr(includeThisDate)) = 1;
104 == countSelectedDaysInRange(01gen2020, 31dic2020, Expr(!(2 <= giorno della settimana(data) <= 6))) = 1;
366 == countSelectedDaysInRange(01 gennaio 2020, 31 dicembre 2020, 1) = 1;
0 == countSelectedDaysInRange(01 gennaio 2020, 31 dicembre 2020, 0) = 1;
Il codice sopra include l'ultimo giorno (<= lastdate anziché
Per esperienza dolorosa so che lavorare con date e orari è difficile da ottenere nel modo giusto.
Usa le funzioni integrate il più possibile.
Commenta il codice per chi lo manterrà dopo.
Testa attentamente il tuo codice!
Inoltre, se hai solo bisogno di un'approssimazione approssimativa,
(1 gennaio 2021-1 gennaio 2020)/giorni(1)*5/7 == 261.428571428571
che è vicino al conteggio di 262.
modificare: differenza data(1 gennaio 2020,1 gennaio 2021,"giorno")*5/7 potrebbe sembrare più semplice per la risposta cruda
Ri: Come calcolare il numero di giorni lavorativi?La prima cosa che devi fare è definire la "giornata lavorativa". È tutti i giorni feriali (lunedì-venerdì)? E i giorni festivi/governativi? Feste religiose?