Apologies for the delay -- hardware problems. %MACRO nonm_2var_stat(dsn_in1=,dsn_in2=,dsn_an=,group_var=,var1in1=, var1in2=, var2in1=, var2in2=,var3in1=, var3in2=);
%macro _; %mend _;
proc sql; ************ 22 seconds **********;
create table &dsn_an. as
select *,
count(distinct(&group_var.)) as nonm_&group_var._cnt from
(select a.*,
count(a.&group_var.) as nonm_obs_per_&group_var._cnt
from &dsn_in1. as a
full join
&dsn_in2. as b
on a.&var1in1.=b.&var1in2. and a.&var2in1.=b.&var2in2.
where a.&var1in1. ne b.&var1in2. and a.&var2in1. ne b.&var2in2.
group by a.&group_var.),
(select count(distinct c.&var1in1.) as ds1_&var1in1._cnt,
count(distinct c.&var2in1.) as ds1_&var2in1._cnt,
count(distinct(c.&group_var.)) as ds1_&group_var._cnt
from &dsn_in1. as c),
(select count(distinct d.&var1in2.) as ds2_&var1in2._cnt,
count(distinct d.&var2in2.) as ds2_&var2in2._cnt,
count(distinct(d.&group_var.)) as ds2_&group_var._cnt
from &dsn_in2. as d);
quit;
%MEND nonm_2var_stat; After several tries, this code does what I wanted. Merge/join analytics for panel data. Thank you everybody!
... View more