Hi,
I am writing a %do loop with decreasing iterative value. But this doesn't work. Can anyone help?
%macro loop;
%do i=3 %to 1 by -1;
data b_&i.;
set a&i.;
run;
%end;
%mend;
%loop;
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric operand is required. The condition was: 1 by -1
ERROR: The %TO value of the %DO I loop is invalid.
ERROR: The macro LOOP will stop executing.
Use %by rather than just by in your do loop statement.
%macro loop;
%do i=3 %to 1 %by -1;
data b_&i.;
set a&i.;
run;
%end;
%mend;
%loop;
Use %by rather than just by in your do loop statement.
%macro loop;
%do i=3 %to 1 %by -1;
data b_&i.;
set a&i.;
run;
%end;
%mend;
%loop;
That worked. Thank you
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.