Hi Arthur, I know where is wrong . Code has been updated. data test;
format date weekdate29.;
do date='01JAN1900'd to '31dec2200'd;
output;
end;
run;
data wantp (drop=date_:);
set test;
date_shift=intnx('week.4',date+3,0,'b'); /*1st Wed in week*/
date_fwy=intnx('week.5',intnx('year',date_shift,0,'b'),0,'e'); /*1st Wed in year*/
week=intck('week',date_fwy,date_shift)+1; /*week number*/
run;
data wantk;
set test;
week=week(date);
if 1 lt weekday(intnx('year',date,0,'b')) lt 5 then week=week+1;
start=intnx('week',date,0,'b');
end=intnx('week',date,0,'e');
start_year=year(start);
end_year=year(end);
if start_year ne end_year then do;
if weekday(mdy(1,1,end_year)) lt 5 then week=1;
else week=ifn(1 lt weekday(intnx('year',start,0,'b')) lt 5,week(start)+1,week(start));
end;
drop start end start_year end_year;
run;
proc compare base=wantk compare=wantp;
run;
Comparison of WORK.WANTK with WORK.WANTP
(Method=EXACT)
Data Set Summary
Dataset Created Modified NVar NObs
WORK.WANTK 17NOV14:20:51:24 17NOV14:20:51:24 2 109938
WORK.WANTP 17NOV14:20:51:24 17NOV14:20:51:24 2 109938
Variables Summary
Number of Variables in Common: 2.
Observation Summary
Observation Base Compare
First Obs 1 1
Last Obs 109938 109938
Number of Observations in Common: 109938.
Total Number of Observations Read from WORK.WANTK: 109938.
Total Number of Observations Read from WORK.WANTP: 109938.
Number of Observations with Some Compared Variables Unequal: 0.
Number of Observations with All Compared Variables Equal: 109938.
NOTE: No unequal values were found. All values compared are exactly equal.
Xia Keshan
... View more