[英]How to calculate the number of days of first week of the month in SAS.if we consider Saturday as first week day
我正在使用 intnx function。
date1=intnx('qtr',"01APR2021"d,0,'b');
我正在考慮遵循算法-
1.檢查上個月的最后一天是否不是星期五。
2.計算直到星期五出現的天數(當前月份)。
誰能幫我這個?
使用INTNX
計算當月的第一天,然后使用WEEKDAY
計算第一周的天數。
WEEKDAY
function 結果是
1st-want 1st_want-v2
1 Sunday 1 2
2 Monday 2 3
3 Tuesday 3 4
4 Wednesday 4 5
5 Thursday 5 6
6 Friday 6 7
7 Saturday 7 1
取決於你想要什么,(假設第一個是星期六,你想要 1 還是 7 作為你的結果?)對於 1,你需要執行額外的計算。
例子:
假設 first 是星期六,您希望在第一周結果中保留 7 天。
data have;
call streaminit (2021);
do _n_ = 0 to 23;
date = intnx('month', '01-jan-2019'd, _n_) + rand('integer', 27);
output;
end;
format date date11.;
run;
data want;
set have;
month_1st = intnx('month', date, 0);
sas_weekday_1st = weekday(month_1st);
result = sas_weekday_1st;
result_v2 = mod(sas_weekday_1st,7) + 1;
format month_1st date11.;
run;
假設提供了月份和年份。
data want;
year = 2020;
month = 1;
start_date = mdy(month, 1, year);
first_friday = nwkdwom(1, 6, month, year);
length_week = start_date - first_friday + 1;
*Toms correction:;
length_week2 = day(nwkdom(1,6,month(date),year(date));
run;
聽起來您想知道該月第一個星期五的日期。 因此該月的第一個星期五是該月的一天。
因此,讓我們從一個數據集開始,該數據集的月份從一周中的每一天開始。
data example;
input date :date9.;
format date date9.;
dow = weekday(date);
downame=put(date,downame.-l);
cards;
01OCT2000
01MAY2000
01FEB2000
01MAR2000
01JUN2000
01SEP2000
01JAN2000
;
現在我們可以使用帶有 WEEK 間隔的 INTNX() function 來查找第一個星期五的日期。 然后,我們可以使用 DAY() function 來查找該星期五的月份日期,從而找出該月第一周的天數。
要獲得第一個星期五,請找到包含該月第二天的周末的星期六,然后減去一個以返回星期五。
data want;
set example;
friday = intnx('week',date+1,0,'e')-1 ;
want = day(friday);
want_name=put(friday,downame.-l);
format friday date9.;
run;
結果:
Obs date dow downame friday want want_name
1 01OCT2000 1 Sunday 06OCT2000 6 Friday
2 01MAY2000 2 Monday 05MAY2000 5 Friday
3 01FEB2000 3 Tuesday 04FEB2000 4 Friday
4 01MAR2000 4 Wednesday 03MAR2000 3 Friday
5 01JUN2000 5 Thursday 02JUN2000 2 Friday
6 01SEP2000 6 Friday 01SEP2000 1 Friday
7 01JAN2000 7 Saturday 07JAN2000 7 Friday
要在一個月中的任何一天執行此操作,請使用具有 MONTH 間隔的 INTNX() function 來查找該月的第一天(並添加一個以查找該月的第二天)。
length_week1=day(intnx('week',intnx('month',date,0,'b')+1,0,'e')-1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.