## sas macro

Solved
Occasional Contributor
Posts: 6

# 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
Super User
Posts: 9,840

## 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.

All Replies
Solution
‎02-16-2015 09:23 AM
Super User
Posts: 9,840

## 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 and locked.