私の会社では、週が土曜日から始まる会計カレンダーを使用しています。 JSL WEEKOFYEAR() 関数によれば、2 つのオプションがあります。日曜日に始まる週にはルール 1 と 2、月曜日から始まる週にはルール 3 です。
日曜日または月曜日以外の日に始まる週を計算する JMP スクリプトを作成した人はいますか?
返信が遅れて申し訳ありません。 あなたのソリューションはうまく機能します。 ありがとう。
解決策が明確であることを確認するために、
@txnelson書きました:
うまくいきました。簡単な解決策があります
Names Default To Here( 1 );
testdate = Date MDY( 12, 31, 2017 );
Week Of Year( testdate + If( Year( testdate ) == Year( testdate + In Days( 1 ) ), In Days( 1 ), 0 ) );
In Days(1) 関数を使用して testdate に 1 日を追加すると、日曜日 = 2、月曜日 = 3、...となります。 金曜日 = 7 ですが、週に 8 日がないため、土曜日は再び 1 になります。
数式内で変数を定義できるのも気に入っています。 非常に役立ちます!
うまくいきました。簡単な解決策があります
Names Default To Here( 1 );
testdate = Date MDY( 12, 31, 2017 );
Week Of Year( testdate + If( Year( testdate ) == Year( testdate + In Days( 1 ) ), In Days( 1 ), 0 ) );
年末に計算が崩れそうなことに今気づきました。
今年の例では、9/30/17 が第 41 週の始まりです。土曜日から始まる他のすべての週は、第 54 週の始まりである 12/30/17 まで適切に増分されます。
何らかの理由で、JMP では、次の 6 日間第 54 週を継続するのではなく、または第 54 週をスキップして第 1 週を開始するのではなく、12/30 土曜日を第 54 週とし、12/31 日曜日を 2018 年の第 1 週の初日としてラベル付けします。週はデータセットの 2 つの異なる日に開始されるべきではないため、欠陥のように見えますか?
第 54 週のデータをすべて第 1 週に変更するには、if ループを追加する必要があります。
計算に 1 日追加すると、必要な結果が得られます
Names Default To Here( 1 );
Week Of Year( Today() + In Days( 1 ) );
「週の最初」の日が異なることに加えて、一般的に年の週がどのように計算されるかは少し驚くべきことです。
特に、(新しい数式コンテキスト メニューから) 「年の週」と「年の週」を比較する場合。
2023 年、ルール #3 はルール #1 に比べて 1 週間以上遅れました。


New Table( "Week",
Add Rows( 30 ),
New Column( "date",
Format( "m/d/y", 12 ),
Formula( Date MDY( 1, 1, 2023 ) + (Row() - 11) * (24 * 3600) )
),
New Column( "\!"Year Week\!"",
Character,
"Nominal",
Formula(
Local(
{w = Week Of Year( :date, 3 ), y = Year( :date ), m = Month( :date )
},
If( Is Missing( :date ),
"",
Char( If( m / w >= 12, y + 1, w / m >= 52, y - 1, y ) ) ||
If( w >= 10, "W", "W0" ) || Char( w )
)
)
)
),
New Column( "Week of Year, rule1",
Formula( Week Of Year( :date ) )
),
New Column( "Week of Year, rule3",
Format( "Best", 12 ),
Formula( Week Of Year( :date, 3 ) ),
Color Cells( {32, {19, 20, 21, 22, 23, 24, 25}} )
),
New Column( "day",
Formula( Day Of Week( :date ) ),
Value Labels( {1 = "Sun", 2 = "Mon"} ),
Use Value Labels( 1 )
)
)