| Date: | Wed, 22 Feb 2006 04:31:14 -0800 |
| Reply-To: | TK <Tony.Kelleher@CSO.IE> |
| Sender: | "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU> |
| From: | TK <Tony.Kelleher@CSO.IE> |
| Organization: | http://groups.google.com |
| Subject: | Re: Merge |
|
| In-Reply-To: | <1140575112.784380.264990@z14g2000cwz.googlegroups.com> |
| Content-Type: | text/plain; charset="iso-8859-1" |
|---|
How about a DATA step merge as follows:
data cctr;
input cctr $ date date9. count;
format date date9.;
cards;
1 1jan2006 10
1 4jan2006 8
2 1jan2006 5
2 2jan2006 2
2 3jan2006 6
3 4jan2006 9
3 5jan2006 7
;
run;
proc sort data=cctr nodupkey out=temp (keep=cctr); by cctr; run;
data alldays1;
set temp;
do date = '01Jan2006'd to '05Jan2006'd;
dayname = LEFT(put(date, downame.));
IF dayname='Sunday' then holiday='Y';
else holiday='N';
format date date9.;
output;
end;
run;
proc sort data=alldays1; by cctr date; run;
proc sort data=cctr; by cctr date; run;
data table;
merge alldays1 (in=a)
cctr (in=b);
by cctr date;
if a;
if count =. then count=0;
run;
A PROC PRINT yields the following output:
Obs cctr date dayname holiday count
1 1 01JAN2006 Sunday Y 10
2 1 02JAN2006 Monday N 0
3 1 03JAN2006 Tuesday N 0
4 1 04JAN2006 Wednesday N 8
5 1 05JAN2006 Thursday N 0
6 2 01JAN2006 Sunday Y 5
7 2 02JAN2006 Monday N 2
8 2 03JAN2006 Tuesday N 6
9 2 04JAN2006 Wednesday N 0
10 2 05JAN2006 Thursday N 0
11 3 01JAN2006 Sunday Y 0
12 3 02JAN2006 Monday N 0
13 3 03JAN2006 Tuesday N 0
14 3 04JAN2006 Wednesday N 9
15 3 05JAN2006 Thursday N 7
|