Desktop productivity for business analysts and programmers

sas macro

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 6
Accepted Solution

sas macro

I have the table below, i want to create  cure_stress_s1 n number of times but not sure how to put this into a macro.


table

period  curr_rate  wt_param
0 0.01  0.21
1 0.02  0.52
2 0.03  0.35


data test;
set table; 
cure_stress_s1 = (cure_rate * (1 + weighted_param_diff));
cure_stress_s2 = (cure_stress_s1 *(1 + weighted_param_diff));
cure_stress_s3 = (cure_stress_s2 *(1 + weighted_param_diff));
cure_stress_s4 = (cure_stress_s3 *(1 + weighted_param_diff));

run;

Any help would be appreciated.
Thanks


Accepted Solutions
Solution
‎02-16-2015 09:23 AM
Esteemed Advisor
Esteemed Advisor
Posts: 7,253

Re: sas macro

You don't want macros, you want arrays:

data test;

     set table;

     array cure_stress{4} 8.;

     cure_stress{1}=cure_rate * (1 + weighted_param_diff);

     do I=2 to 4;

          cure_stress{I}=cure_stress{I-1} * (1 + weighted_param_diff);

     end;

run;


You could of course put number of iterations into a macro variable if you want and replace that in the code.

View solution in original post


All Replies
Solution
‎02-16-2015 09:23 AM
Esteemed Advisor
Esteemed Advisor
Posts: 7,253

Re: sas macro

You don't want macros, you want arrays:

data test;

     set table;

     array cure_stress{4} 8.;

     cure_stress{1}=cure_rate * (1 + weighted_param_diff);

     do I=2 to 4;

          cure_stress{I}=cure_stress{I-1} * (1 + weighted_param_diff);

     end;

run;


You could of course put number of iterations into a macro variable if you want and replace that in the code.

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 1 reply
  • 236 views
  • 0 likes
  • 2 in conversation