Hi everyone,
I have a problem when I was developing an optimization model.
I have a data set in hand which has four columns: ID, frt_val, mid_val and bck_val, and I want to create another data set which is the parameters table for the optimization problem. The length of the parameters table can dynamically change based on number of &Vol. Suppose we set %let Vol = 8; how can I create a table which has &Vol + 1 columns (one for ID), such that the second column stores value of frt_val, the last column stores value of bck_val, and values from columns 3 to 7 are equivalent to mid_val?
Thank you a lot for your help!
YH Fung
As an example:
table 1:
ID frt_val mid_val bck_val
101 100 99 109
102 -10 20 -9
... ... ... ...
how can I create table 2 as following?
table 2:
ID vol1 vol2 vol3 vol4 vol5 vol6 vol7 vol8
101 100 99 99 99 99 99 99 109
102 -10 20 20 20 20 20 20 -9
... ... ... ... ... ... ... ... ...
Here's one way:
data want(keep=ID vol:);
set have;
array vol[&Vol];
vol1 = frt_val;
do j = 2 to &Vol-1;
vol
end;
vol&Vol = bck_val;
run;
Here's one way:
data want(keep=ID vol:);
set have;
array vol[&Vol];
vol1 = frt_val;
do j = 2 to &Vol-1;
vol
end;
vol&Vol = bck_val;
run;
Hi RobPratt,
It works! Thank you so much for your help!
YH Fung
Glad to help. Please mark this question Answered.
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 to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.