*---Purpose: Example of Merging
multiple data sets based on single match id;
*---Create example datasets for the example;
*---Macro RAN_SDS sas
datasets with random number of observations;
%macro
ran_sds1( n );
%local i ;
%do i = 1 %to &n ;
data ran&i;
do id=1 to int(1000*ranuni( 0 ))+1;
var&i
= 100*ranuni(2324);
output ;
end;
run;
%end;
%mend;
%ran_sds1( 10 ) ;
*---Create example (master) data set;
data master;
do id=1 to 1000;
var = int(10000*ranuni(2324));
output;
end;
run;
*---Macro m_merge will merge
10 data sets by ID variable;
%let list =
ran1 ran2 ran3 ran4 ran5 ran6 ran7 ran8 ran9 ran10;
%macro
m_merge(
list );
%let i = 1;
%do %until(%scan(&list,&i, %str()) = %str());
%let sds = %scan(&list,&i, %str());
%if &i = 1 %then
%do;
data merg;
merge master
&sds;
by id;
run;
%end;
%else
%do;
data merg;
merge merge
&sds;
by id;
run;
%end;
%let i = %eval(&i+1) ;
%end;
%mend;
*---Execute Macro;
options mprint ;
%m_merge( &list );