稼働日数の計算方法は?こんにちはコミュニティ
もう一度お願いします。新しいユーザーとして、私は学ぶのに苦労しています。
開始日と終了日のデータテーブルがあります。開始日から終了日までの就業日数を計算したいのですが?JMPでそれを行う最良の方法は?私のアイデアは、列を追加して式を作成することです、例えば 日付の違い??しかし、私はより良いオプションが何であるかわかりません。
添付の例をご覧ください

ありがとう
マーティン
分析データ表再:どのように営業日数を計算するには?最初に行う必要があるのは、「就業日」を定義することです。平日(月〜金)ですか?銀行/政府の休日はどうですか?宗教的な休日?
再:どのように営業日数を計算するには?その他の質問も:JMPの日付には常に時刻が含まれ、多くの場合午前0時からゼロ秒に設定されます。しかし、範囲が月曜日の正午から7日後の月曜日の正午である場合、2つの半月曜日をどのようにカウントしますか?または、月曜日の初めの真夜中であっても、両方をカウントする必要がありますか?
範囲が小さくて数が多すぎない場合は、日数をカウントすることは悪い選択ではない可能性があります(十分にテストされていないコードが続きます)。
// 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 <=曜日(日付)<= 6)))= 1;
366 == countSelectedDaysInRange(01Jan2020、31Dec2020、1)= 1;
0 == countSelectedDaysInRange(01Jan2020、31Dec2020、0)= 1;
上記のコードには、最終日(<= lastdate)が含まれています。最初の日時値から開始し、24時間増分し、その日時値が式を満たす場合は、カウントに1を加えます。
痛みを伴う経験から、日付と時刻を操作することは正しく行うのが難しいことを知っています。
組み込み関数をできるだけ使用します。
次にコードを保守する人にコードをコメントしてください。
コードを注意深くテストしてください!
また、大まかな近似のみが必要な場合は、
(1jan2021-1jan2020)/ indays(1)* 5/7 == 261.428571428571
これは262カウントに近い値です。
編集: 日付の差(2020年1月1日、2021年1月1日、"日")* 5/7 大雑把な答えの方がシンプルに見えるかもしれません
再:どのように営業日数を計算するには?はい、営業日は毎週平日です(mon-fri)現地の休日にも調整できれば最高です
助言がありますか?
再:どのように営業日数を計算するには?簡単な解決策は、テスト式を拡張することです。
// define an expression that answers the question
holidays = associativearray({1jan2020,25dec2020});
includeThisDate = Expr(
(2/*monday*/<= Day Of Week( date ) <= 6/*friday*/)
&
!(holidays<<CONTAINS></CONTAINS>2020年の正月とクリスマスは平日であるため、262ではなく260になります。連想配列を将来更新する必要があり、履歴データも必要になる場合があります。一部の休日は毎年同じ日に当てはまらない。どのような醜い問題、それが...
複雑なソリューションは次のようなものを使用するかもしれません https://www.abstractapi.com/holidays-api
(クレジットあずきっくために日付と時刻の列を変更して日付のみを取得する。 )
再:どのように営業日数を計算するには?コーディングの作業は私にとっては初めてであり、うまく機能していないようです。しかし、私はいくつかの標準的な数式をいじって、解決策を見つけました。ただし、稼働日のみではなく、暦日を使用します。この実験では、比較のために同じであるので十分です。
再:どのように営業日数を計算するには?にビットを追加するにはあずきっく '砂あずきっくの休日などについての考えでは、「地元の休日」の会計処理についての考えを述べました。「ローカル」の標準的な定義を採用しない限り、これは非常に難しくなります。たとえば、カナダには米国と同様に「感謝祭」の休日があります。米国と比較して、カナダのカレンダーでは別の日になります。そして、私を米国の都市または州レベルで始めさせないでください。たとえば、メイン州とマサチューセッツ州では、愛国者の日は祝日であり、米国の他の場所では祝われません。それをさらに粘り強くするために、いくつかのビジネスは閉じます...他は開いたままです。銀行と金融機関が含まれています。
再:どのように営業日数を計算するには?私のお気に入りは古いノースカロライナです野球の休日 。
再:どのように営業日数を計算するには?こんにちは @Martinej 、
私はしばらく前に、2つの日付列の間の稼働日数を計算するアドインを書きました。休日や除外したいその他の特定の日に対処するには、アドインディレクトリに保存されているHoliday List.jmpファイルを維持します。注:このファイルは、JMPユーザーのマシンがアクセスできる任意の場所に保持されている任意のドキュメント(Excel、.txt、.csvなど)である可能性がありますが、ファイルの場所を提供するために、基礎となるJSLを少し調整する必要があります。それ以外の場合は、リクエストされたニーズにそのまま対応できると思います。休日リストファイルのダウンロード、インストール、編集の手順に従います。 NETWORKDAYS関数
お役に立てれば、
ジェリー
再:どのように営業日数を計算するには?こんにちはジェリー
これは本当に役に立ちました。私は自分のリストを作成し、今はそれが私が望むものを示しました。
ありがとう
マーティン