proc sort data=sample ;
by facility_id ;
run;
*if your data already sorted by facility_id, you don't need sort it again.;
* in the result, the restr1 will be the freqency restr1 in (0 1), the restr1_count will be the freqency for restr1=1;
* same for restr2;
*if there are no missing values exist, restr1 will be equqal to restr2;
data result;
set sample;
by facility_id;
drop count1 count2 ssn;
if first.facility_id then do;
count1=0;
count2=0;
restr1_count=0;
restr2_count=0;
end;
if restr1 eq 1 then restr1_count+1;
else if restr1 eq 0 then count1+1;
if restr2 eq 1 then restr2_count+1;
else if restr2 eq 0 then count2+1;
if last.facility_id then do;
restr1=sum(count1,restr1_count);
restr2=sum(count2,restr2_count);
output;
end;
run;
... View more