Is there any way we can change length of the variable created with CREATE DATA statement? I have a text variable which is used as a key variable in PROC OPTMODEL but it gets truncated in the data which is created with CREATE DATA statement. I am new to PROC OPTMODEL. Could you also please give a example of how OR condition is used in constraint? For example, sum {c in customers} (product[c] IN ('A', 'B'))
The CREATE DATA statement has a LENGTH= option:
Correct syntax for your sum is:
sum {c in customers: product[c] IN {'A', 'B'}}
For new users of PROC OPTMODEL, I recommend this book of examples.
The CREATE DATA statement has a LENGTH= option:
Correct syntax for your sum is:
sum {c in customers: product[c] IN {'A', 'B'}}
For new users of PROC OPTMODEL, I recommend this book of examples.
Thanks @RobPratt for your reply. Very much appreciated!
Is sum {c in customers: product[c] IN {'A', 'B'}} equivalent to sum {c in customers} (product[c] IN {'A', 'B'})? I get confused with ':' symbol. Does it represent AND condition? Many times i see ':' is not required to apply AND condition.
The colon : operator (which you can think of as "such that") allows you to select a subset based on a logical expression:
The following expressions are all equivalent and count the number of customers whose product is A or B:
sum {c in customers} (product[c] IN {'A', 'B'})
sum {c in customers} (if product[c] IN {'A', 'B'} then 1 else 0)
sum {c in customers} (if product[c] IN {'A', 'B'} then 1)
sum {c in customers: product[c] IN {'A', 'B'}} 1
card({c in customers: product[c] IN {'A', 'B'})
See also my reply here, which is similar:
Thanks @RobPratt. You have been very helpful. I've made a good progress in learning PROC OPTMODEL and credit goes to you for providing links and clarifying doubts with examples.
Last question - Why do we need to write 1 in the following statement?
sum {c in customers: product[c] IN {'A', 'B'}} 1
Can't we simple write (without 1) -
sum {c in customers: product[c] IN {'A', 'B'}}
I remember you provided the similar solution wherein you mentioned 1 before dividing by 3-
ceil(sum {c in customers: sales[c] > 50} 1 / 3)
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
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.