BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.

Say I have the matrices:

A = { 1 -2 3,

         -1 1 5,

          3 -2 -4};

B = { 0 0 0,

         0 0 0,

          0 0 0};

And I would like to apply the following logic: If a value of A is less than zero (A<B), then keep the value. If not then double the value.

My goal is the matrix

C = { 2  -2 6,

         -1 2 10,

          6 -2 -4};

Can this be done in IML?  I am running into issues where the comparison is being treated as an ALL function. 

Or, if I use a statement such as C=A>B then I am returned a matrix of binary values based on the comparison.

Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
Rick_SAS
SAS Super FREQ

You don't need the matrix B.  Use the CHOOSE function as follows:

C = choose(A<0, A, 2*A);

For more information about the CHOOSE function, see Complex assignment statements: CHOOSE wisely - The DO Loop

View solution in original post

2 REPLIES 2
Rick_SAS
SAS Super FREQ

You don't need the matrix B.  Use the CHOOSE function as follows:

C = choose(A<0, A, 2*A);

For more information about the CHOOSE function, see Complex assignment statements: CHOOSE wisely - The DO Loop

Rick_SAS
SAS Super FREQ

If you do need to use IF-THEN/ELSE logic on matrices, read this article: IF-THEN logic with matrix expressions - The DO Loop

sas-innovate-white.png

Missed SAS Innovate in Orlando?

Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.

 

Register now

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