Statistical programming, matrix languages, and more

'IF-THEN' using IML

Reply
Learner
Posts: 1

'IF-THEN' using IML

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;

SAS Super FREQ
Posts: 3,475

Re: 'IF-THEN' using IML

[ Edited ]

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

SAS Super FREQ
Posts: 3,475

Re: 'IF-THEN' using IML

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

Ask a Question
Discussion stats
  • 2 replies
  • 240 views
  • 0 likes
  • 2 in conversation