우리 회사는 한 주가 토요일에 시작하는 회계 달력을 사용합니다. JSL WEEKOFYEAR() 함수에 따르면 일요일에 시작하는 주에 대한 규칙 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일을 더하면 Sunday = 2, Monday = 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까지 적절하게 증가합니다.
2018년 JMP에서는 다음 6일 동안 54주차를 계속하거나 54주차를 건너뛰고 1주차를 시작하는 대신 12월 30일 토요일을 54주로 지정하고 12월 31일 일요일을 1주차의 첫째 날로 지정합니다. 데이터 세트에 대해 서로 다른 두 날에 주가 시작되어서는 안 되기 때문에 결함처럼 보입니까?
54주 데이터를 모두 1주로 변경하려면 if 루프를 추가해야 합니다.
계산에 하루를 추가하면 원하는 것을 얻을 수 있습니다.
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 )
)
)