Wie berechnet man die Anzahl der Arbeitstage?Hallo Community
Ich brauche deine Hilfe und berate noch einmal. Als neuer Benutzer habe ich Schwierigkeiten zu lernen.
Ich habe eine Datentabelle mit Start- und Enddatum. Ich möchte die Anzahl der Arbeitstage zwischen Start- und Enddatum berechnen? Wie geht das am besten in JMP? Meine Idee ist es, eine Spalte hinzuzufügen und eine Formel zu erstellen, z Datumsunterschied ?? Aber ich bin mir nicht sicher, was die bessere Option wäre.
siehe beigefügtes Beispiel

Vielen Dank
Martin
AnalytikDatentabelleBetreff: Wie berechnet man die Anzahl der Arbeitstage?Als erstes müssen Sie "Arbeitstag" definieren. Ist es jeden Wochentag (Mo-Fr)? Was ist mit Feiertagen? Religiöse Feiertage?
Betreff: Wie berechnet man die Anzahl der Arbeitstage?Auch andere Fragen: JMP-Daten enthalten immer eine Zeit, die häufig nach Mitternacht auf null Sekunden gesetzt wird. Aber wenn der Bereich Montag bis Montag 7 Tage später Mittag ist, wie möchten Sie die beiden halben Montage zählen? Oder sollten beide gezählt werden, auch wenn es Anfang Montag Mitternacht ist?
Das Zählen der Tage ist möglicherweise keine schlechte Wahl, wenn Ihre Bereiche klein und nicht zu viele sind (schlecht getesteter Code folgt):
// 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 counted 262 == countSelectedDaysInRange (01Jan2020, 31Dec2020, Name Expr (includeThisDate)) = 1;
104 == countSelectedDaysInRange (01Jan2020, 31Dec2020, Expr (! (2 <= Wochentag (Datum) <= 6)) = 1;
366 == countSelectedDaysInRange (01Jan2020, 31Dec2020, 1) = 1;
0 == countSelectedDaysInRange (01Jan2020, 31Dec2020, 0) = 1;
Der obige Code enthält den letzten Tag (<= letztes Datum statt
Aus schmerzhafter Erfahrung weiß ich, dass es schwierig ist, mit Daten und Zeiten zu arbeiten.
Verwenden Sie die integrierten Funktionen so oft wie möglich.
Kommentieren Sie den Code für denjenigen, der ihn als Nächstes verwaltet.
Testen Sie Ihren Code sorgfältig!
Auch wenn Sie nur eine grobe Annäherung benötigen,
(1jan2021-1jan2020) / indays (1) * 5/7 == 261.428571428571
Das liegt nahe an der Zahl von 262.
bearbeiten: Datumsdifferenz (1jan2020,1jan2021, "Tag") * 5/7 könnte für die grobe Antwort einfacher aussehen
Betreff: Wie berechnet man die Anzahl der Arbeitstage?Ja, Arbeitstage sind jeden Wochentag (Mo-Fr). Es wäre am besten, wenn ich mich auch auf lokale Feiertage einstellen könnte
irgendwelche Vorschläge?
Betreff: Wie berechnet man die Anzahl der Arbeitstage?Die einfache Lösung wäre, den Testausdruck zu erweitern.
// define an expression that answers the question
holidays = associativearray({1jan2020,25dec2020});
includeThisDate = Expr(
(2/*monday*/<= Day Of Week( date ) <= 6/*friday*/)
&
!(holidays<<CONTAINS></CONTAINS>Neujahr und Weihnachten fallen an Wochentagen im Jahr 2020, also 260 statt 262. Sie müssen das assoziative Array irgendwann in der Zukunft aktualisieren, und möglicherweise benötigen Sie auch historische Daten. Einige Feiertage fallen nicht jedes Jahr auf denselben Tag. Was für ein hässliches Problem, das zu ...
Eine komplizierte Lösung könnte so etwas wie verwenden https://www.abstractapi.com/holidays-api
(Gutschrift an @ Jeff_Perkinson zum Ändern einer Datums- und Uhrzeitspalte, um nur das Datum zu erhalten. )
Betreff: Wie berechnet man die Anzahl der Arbeitstage?Das Arbeiten mit Codierung ist für mich neu und ich scheine es nicht zum Laufen zu bringen. Ich habe jedoch mit einigen der Standardformeln herumgespielt und eine Lösung gefunden. die jedoch Kalendertage und nicht nur Arbeitstage verwenden. Für dieses Experiment ist es gut genug, da es zum Vergleich dasselbe ist.
Betreff: Wie berechnet man die Anzahl der Arbeitstage?Ein bisschen hinzufügen @Craige_Hales und @ Jeff_Perkinson In den Gedanken zu Feiertagen usw. haben Sie Gedanken zur Berücksichtigung von „lokalen Feiertagen“ erwähnt. Das wird wirklich schwierig, wenn Sie nicht eine Standarddefinition für "lokal" übernehmen. Zum Beispiel hat Kanada genau wie die USA einen Erntedankfest. Nur dass es für Kanada einen anderen Tag im Kalender gibt als für die USA. Und lass mich nicht einmal auf Stadt- oder Staatsebene in den USA anfangen. In den Bundesstaaten Maine und Massachusetts beispielsweise ist der Patriot's Day ein Feiertag, der in den USA nirgendwo anders gefeiert wird. Um es noch klebriger zu machen, schließen einige Unternehmen ... andere bleiben offen. Banken und Finanzinstitute eingeschlossen.
Betreff: Wie berechnet man die Anzahl der Arbeitstage?Mein Favorit ist das alte North Carolina Baseball Urlaub .
Betreff: Wie berechnet man die Anzahl der Arbeitstage?Hallo @ Martinj ,
Ich habe vor einiger Zeit ein Add-In geschrieben, das die Anzahl der Arbeitstage zwischen zwei Datumsspalten berechnet. Feiertage und andere bestimmte Tage, die Sie ausschließen möchten, werden durch Verwalten einer in Ihrem Add-In-Verzeichnis gespeicherten Datei Holiday List.jmp behandelt. Hinweis: Bei dieser Datei kann es sich um ein beliebiges Dokument (Excel, TXT, CSV usw.) handeln, das an einem beliebigen Speicherort verwaltet wird, auf den der Computer des JMP-Benutzers zugreifen kann. Dies würde jedoch eine geringfügige Änderung der zugrunde liegenden JSL erfordern, um den Speicherort der Datei bereitzustellen. Ansonsten geht es meiner Meinung nach so um, wie es ist. Befolgen Sie die Anweisungen zum Herunterladen, Installieren und Bearbeiten der Feiertagslistendatei: NETWORKDAYS-Funktion
Hoffe das hilft,
Jerry
Betreff: Wie berechnet man die Anzahl der Arbeitstage?Hallo Jerry
Das war wirklich hilfreich. Ich habe meine eigene Liste erstellt und jetzt hat sie gezeigt, was ich möchte.
Vielen Dank
Martin