09-17-2015 10:14 PM
Please I need help....
I have one years' worth of data, I want to flag any ID that occurs more than 1 in any 6-month period from the date on the row of that ID
09-17-2015 11:01 PM
data have; input ID Date: mmddyy10.; cards; 123 1/1/15 456 2/2/15 123 2/20/15 ; proc sort data=have; by id date; run; data want; set have; by id date; if first.id then count=1; else count+1; if last.id; run;
09-17-2015 11:03 PM
Group by every observation (ID, date) in a proc SQL self join :
proc sql; select a.id, a.date, 1 + count(b.id) as count from have as a inner join have as b on a.id=b.id and b.date > a.date and intck("MONTH", a.date, b.date, "C") < 6 group by a.id, a.date; quit;
09-18-2015 12:35 AM - edited 09-19-2015 02:55 AM
I don't understand what you mean.
You mean ID must have 2-6 month data ?
What if a ID have two or more obs in one month ?
data have; input ID Date : mmddyy10.; format date mmddyy10.; cards; 123 1/1/15 456 2/2/15 123 2/20/15 ; run; proc sql; create table want as select id,count(*) as n from have group by id having count(distinct month(date)) between 2 and 6; quit;