Hi there, 1. I am trying to run the same exact code twice for two datasets and have tried creating a macros for it. Could you maybe tell me if i can do this like this or some-other way ? 2. Also how can I see how my macros is processing in the log. Is it the mprint option ? If yes how to use it in this code ? Here's my code %macro printit (data1=,data2=,data3=,data4=) ;
proc print data=&data1.;
title &data1.;
run ;
proc print data=&data2.;
title &data2.;
run ;
proc print data=&data3.;
title &data3.;
run ;
proc print data=&data4.;
title &data4.;
run ;
%mend printit ;
%printit ( data1=sasuser.sample1_drugs,
data2= sasuser.sample1_step1,
data3=sasuser.sample1_step2,
data4=sasuser.sample2_drugs) ;
%macro datasets (dataset1=, dataset2=,) ;
proc sort data=&dataset1. out=sorted_&dataset1.;
by ptid drug ;
run ;
proc sort data=&dataset2. out=sorted_&dataset2.;
by ptid drug;
run ;
data step1_&dataset1.;
set sorted_&dataset1. ;
by ptid drug ;
if first.drug then gap=0;
format lag_date date9. ;
lag_date= lag(drug_dt);
if drug_dt-lag_date >=60 /*and first.ptid=0*/ then gap + 1;
run ;
proc sql;
create table step1_final as
select ptid, drug, min(drug_dt) as stdt format=date9. ,max(drug_dt) as enddt format=date9.
from step1_1
group by ptid, drug, gap ;
quit ;
/* STEP 2 */
data all_days;
set step1_final;
do date=stdt to enddt;
output;
end;
drop stdt enddt;
run;
proc sort data=all_days out=all_days_sorted;
by ptid date;
run;
data all_days2;
do until(last.date);
set all_days_sorted;
by ptid date;
length regimen $200;
call catx('+',regimen,drug);
end;
run;
data all_days3;
set all_days2;
by ptid date;
diff=dif(date);
output;
if not first.ptid and diff>1 then do;
regimen='BLANK';
do date=date-diff+1 to date-1;
output;
end;
end;
run;
proc sort data=all_days3 out=all_days3_sorted;
by ptid date;
run;
data step2_final;
do until(last.regimen);
set all_days3_sorted;
by ptid regimen notsorted;
if first.regimen then
stdt=date;
end;
enddt=date;
format stdt enddt date9.;
keep ptid regimen stdt enddt;
run;
%mend datasets;
%datasets (dataset1=sasuser.sample1_drugs, dataset2=sasuser.sample2_drugs) ;
... View more