Lesson 31:  Introduction to IML

SAS IML is a programming language for working with matrices.  IML stands for "Interactive Matrix Language."  The language is invoked, or started, by issuing a "proc iml;" command.  IML is interactive.  You can keep submitting statements, one after the other, and IML will execute them.  No "run" statement is necessary.  IML stops when another step (data or proc) starts, or a "quit;" command is given.

We can define a matrix in IML with an assignment statement and a list of elements in curly brackets, with rows separated by commas.  Just like any other SAS code, the placement of the text on the line doesn't matter, so you can string them out on one line or organize them neatly in rows and columns.  In order to see what the matrix looks like, you can use the print command.

The standard matrix operations, line addition, subtraction, and multiplication, are given by the usual operators, "+", "-", and "*".   The division operator can be used with scalars, but if used with two conformable matrices, it will do element-wise division too, and a double asterisk is for exponents, as usual.  However, there are many more operators in IML.  The number sign ("#") is element-wise multiplication, and a double number sign is element-wise exponentiation.  Double horizontal bars will concatenate matrices side-by-side, while double slashes will concatenate them vertically.

There are a number of standard functions that are commonly used in IML.  The transpose of X is given by "X`", which is X followed by a back-quote character (to the left of "1" on the keyboard).  It can also be found by "t(X)" which is the function notation equivalent.  The inverse of X is given by "inv(X)".  Since there are many functions, the best thing to do is refer to the documentation.  In the Online Documentation, IML has its own entry in the main tree.  You can go to the link http://support.sas.com/onlinedoc/913/docMainpage.jsp, then find the branch that says "SAS/IML User's Guide.  Click the plus sign next to it, and a long list of interesting branches open up.  Near the bottom, we find "Language Reference."  Open that up, and you will find, among other things, "Operators" and "Statements, Functions, and Subroutines."  In these two sections you will find information about the operators and functions.  There is no need to repeat all this here, you should make use of the documentation as necessary.

Exercises:

1. Explore the available functions and give examples of the use of five different functions.

Copyright reserved by Dr.  Dwight Galster, 2009.  Please request permission for reprints (other than for personal use) from dwight@galsterhome.com .  "SAS" is a registered trade name of SAS Institute, Cary North Carolina.  All other trade names mentioned are the property of their respective owners.  This document is a work in progress and comments are welcome.  Please send an email if you find it useful or if your site links to it.