data have1;
informat client 2. admit_date mmddyy10. discharge_date mmddyy10.;
input client admit_date discharge_date;
format admit_date discharge_date mmddyy10.;
datalines;
1 04122021 04202021
1 05012021 05132021
1 06142021 06202021
2 04152021 04252021
2 04292021 05162021
3 04172021 04252021
4 04182021 04192021
4 04222021 04242021
;
data have2;
informat client 2. date mmddyy10. visit_type $1.;
input client date visit_type;
format date mmddyy10.;
datalines;
1 04122021 1
1 04132021 1
1 04142021 1
1 04152021 2
1 04162021 2
1 04182021 1
1 06142021 1
1 06182021 1
1 06202021 1
2 04172021 2
2 04182021 2
2 06162021 1
3 04222021 1
;
data want(drop = date visit_type);
if _N_ = 1 then do;
dcl hash h(dataset : "have2", multidata : "Y");
h.definekey("client");
h.definedata("date", "visit_type");
h.definedone();
end;
set have1;
if 0 then set have2;
visittype1count = 0;
visittype2count = 0;
do while (h.do_over() = 0);
if admit_date <= date <= discharge_date & visit_type = "1" then visittype1count + 1;
else if admit_date <= date <= discharge_date & visit_type = "2" then visittype2count + 1;
end;
run;
Result:
client admit_date discharge_date visittype1count visittype2count
1 04/12/2021 04/20/2021 4 2
1 05/01/2021 05/13/2021 0 0
1 06/14/2021 06/20/2021 3 0
2 04/15/2021 04/25/2021 0 2
2 04/29/2021 05/16/2021 0 0
3 04/17/2021 04/25/2021 1 0
4 04/18/2021 04/19/2021 0 0
4 04/22/2021 04/24/2021 0 0
... View more