Hi,
I have data that look like this.
id date
1 1/1/2001
1 1/1/2001
1 1/2/2002
1 1/2/2002
1 1/2/2003
1 1/2/2003
2 1/1/2005
2 1/1/2005
2 1/1/2005
2 1/2/2005
2 1/2/2005
2 1/3/2006
2 1/3/2006
How do I count by id and then by date? like so
id date count
1 1/1/2001 1
1 1/1/2001 1
1 1/2/2002 2
1 1/2/2002 2
1 1/2/2003 3
1 1/2/2003 3
2 1/1/2005 1
2 1/1/2005 1
2 1/1/2005 1
2 1/2/2005 2
2 1/2/2005 2
2 1/3/2006 3
2 1/3/2006 3
so it counts every new date within the id but starts over at 1 for every new id? I tried the following but to no avail.
data work.a;
by id;
if first.id then count=0;
if count=0 then do;
fdate=date;
count+1;
end;
edate=date;
diff=edate=fdate;
if diff>0 then count+1;
run;
Thanks!
Untested - but should work. Using "count+1" implicitly makes count a retained variable.
data work.a;
by id date;
if first.id then count=1;
else if first.date then count+1;
run;
Untested - but should work. Using "count+1" implicitly makes count a retained variable.
data work.a;
by id date;
if first.id then count=1;
else if first.date then count+1;
run;
Hi Patrick,
Thank you. It works. I can now use the properties of count to manipulate the observations.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.