BookmarkSubscribeRSS Feed
kochsner
Calcite | Level 5

I am using if-then statements in a program I am running.  I have successfully run the program using data step processing, and am now trying an alternative method using proc iml.  However, the if-then statements are not working as they should when using IML.  I do not recieve error messages in the log, but the results are not what they should be.  Does proc iml require different language when using 'if-then' statements?  Below is the code I am referring to:

 

if 0 <= yg < 2 then YG_SCS= YG1_Avg;
if 2 <= yg < 2.5 then YG_SCS = YG2_Avg;
if 2.5 <= yg < 3 then YG_SCS = YG2A_Avg;
if 3 <= yg < 4 then YG_SCS = YG3_Avg;
if 4 <= yg < 5 then YG_SCS = YG4_Avg;
else if yg >= 5 then YG_SCS =YG5_Avg;

2 REPLIES 2
Rick_SAS
SAS Super FREQ

The DATA step supports the ternary operator that you mention. This is called the "implied AND operator."  In other languages, including SAS/IML, you need to use an explicit operator to obtain the result you want. For details, explanation, and the IML syntax, see the article

"The DATA step and the implied AND operator."

 

The article concludes:

Don't use the DATA step syntax in your SAS/IML programs. Instead, use an explicit AND operator such as (-2<x & x<2).

Rick_SAS
SAS Super FREQ

Do you have additional questions? If not, please mark this questions as solved so that others know that it has been answered.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

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!

Register Now

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 2 replies
  • 1456 views
  • 0 likes
  • 2 in conversation