Dear all,
I'm quite new to macro, and my question is:
I'm trying to merge 12 datasets together, named data_1 to data_12 with id and already sorted, and my code is
%macro mergedata;
%do i=1 %to 12;
data merged_data;
merge data_&i;
by id;
%end;
run;
%mend;
and it resulted in only the data from data_12. it seems that data_1 to data_11 were replaced and disappeared.
How should I rewrite that? Thank you very much!
%macro mergedata;
data merged_data;
merge
%do i=1 %to 12;
data_&i
%end;
;
by id;
run;
%mend;
%macro mergedata;
data merged_data;
merge
%do i=1 %to 12;
data_&i
%end;
;
by id;
run;
%mend;
When writing a macro language program, you always, always, always have to know what the program would look like if you were not using macro language.
@SAS_inquisitive has the right idea here. It just needs a slight tweak, removing the extra semicolon here:
%do;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.