カスタムの日付/シフトを使用して数式列を作成するにはどうすればよいですか?私は勤務シフト構造に関する分析に取り組んでいます。1 シフトあたり 12 時間勤務です。つまり、午前 7 時から午後 7 時 (日勤、D) と午後 7 時から午前 7 時 (夜勤、N) まで勤務します。
現在、次のような数式列スクリプトがあります。
"WW" || Char (Week of Year (:date)) || "." || Char (Day of week (:date) - 1) ||
If (Hour (:date) <= 19 & Hour(:date) >= 7, "D", "N")
このスクリプトに基づいて bcs が期待したように機能しないようです。時間が午前 12 時になると常に新しい日に変わります。
例えば:
このスクリプトは、12/01/2020 5:49:47 AM を WW49.2N に変換します。これは WW49.1N である必要があります。WW49.2D は、日付と時刻が 12/01/2020 7:00:00 AM のときに開始されます。これは、夜勤の時間が午後 7 時から午前 7 時までであるためです。スクリプトを作成する別の方法を提案またはアドバイスしてもらえますか?
高度な統計モデリング自動化とスクリプト消費者および市場調査実験計画法Re:カスタムの日付/シフトを使用して数式列を作成するにはどうすればよいですか?これを処理する最善の方法は、7時間を差し引いて日時の値を修正することです。これにより、シフトが日の値と一致します。
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: カスタムの日付/シフトを含む数式列を作成するにはどうすればよいですか?これは興味深いことです。なぜなら、数式内の >= と < の位置を入れ替えることもできるからです。
correctedDate = :date - In Hours( 7 );
"WW" || Char( Week Of Year( correctedDate ) ) || "." || Char( Day Of Week( correctedDate ) - 1 ) ||
If( 0 < Hour( correctedDate ) <= 12,
"D",
"N"
);
私も似たような問題に取り組んでいますが、夜勤と昼勤の割り当ては、if文における<と<=記号の相対的な位置によって若干異なります。if文の中でタイムスタンプを直接使えるようにできれば素晴らしいと思います(if time > 12:00:00 ...)。もしかしたらできるかもしれませんが、まだ十分に調べていません。
しかし、私の主な疑問は、 「< 記号と <= 記号をどこに置くかをどのように決めたのか」ということです。当然のことながら、シフトごとに 12 時間を均等に分割することが重要ですが、これはどちらの構成でも実現できます (< を <= の前に、<= を < の前に)。
Re: カスタムの日付/シフトを含む数式列を作成するにはどうすればよいですか?午後 7 時は新しいシフトの開始時間で、これは hour() 19 です。7 時間のオフセットを取っているため、夜勤を開始する Hour() 値は 19 - 7 で 12 になります。比較が <= の場合、時間値がちょうど 12 であれば日勤とみなされます。
Re: カスタムの日付/シフトを含む数式列を作成するにはどうすればよいですか?ありがとうございます。後になって、自分のファイルをいじっていた時に気づきました。もちろん、あまりよく考えていない質問を投稿した後です。ご辛抱いただきありがとうございます。