What’s New in SAS/IML 9.3

Overview

SAS/IML 9.3 includes two new features that are related to calling other languages from within the IML procedure:
  • calling SAS procedures and DATA steps from PROC IML
  • calling functions in the R statistical programming language from PROC IML
In addition, SAS/IML 9.3 provides several new functions and subroutines.

Calling SAS Procedures from PROC IML

SAS/IML 9.3 supports the SUBMIT and ENDSUBMIT statements. These statements delimit a block of statements that are sent to another language for processing.
The SUBMIT and ENDSUBMIT statements enable you to call SAS procedures and DATA steps without leaving the IML procedure. This feature has been very popular in SAS/IML Studio since it was introduced in 2002. The feature is now available in PROC IML.
You can use SAS data sets to transfer data between SAS/IML matrices and SAS procedures. SAS procedures require that data be in a SAS data set.

Calling R Functions from PROC IML

The SUBMIT and ENDSUBMIT statements also provide an interface to the R statistical programming language, so that you can submit R statements from within your SAS/IML program. To submit statements to R, specify the R option in the SUBMIT statement.
You can transfer data from SAS/IML matrices and SAS data sets into R matrices and R data frames, and vice versa. Specifically, the following subroutines are available to transfer data from a SAS format into an R format:
Transferring from a SAS Source to an R Destination
Subroutine
SAS Source
R Destination
ExportDataSetToR
SAS data set
R data frame
ExportMatrixToR
SAS/IML matrix
R matrix
In addition, the following subroutines are available to transfer data from an R format into a SAS format:
Transferring from an R Source to a SAS Destination
Subroutine
R Source
SAS Destination
ImportDataSetFromR
R expression
SAS data set
ImportMatrixFromR
R expression
SAS/IML matrix
In the previous table, an "R expression" can be the name of a data frame, the name of a matrix, or an expression that results in either of these data structures.

New Functions and Subroutines

ALLCOMB Function
generates all combinations of n elements taken k at a time.
ALLPERM Function
generates all permutations of n elements.
BIN Function
divides numeric values into a set of disjoint intervals called bins. The BIN function indicates which elements are contained in each bin.
CORR Function
computes a sample correlation matrix for data. The function supports Pearson’s product-moment correlations, Hoeffding’s D statistics, Kendall’s tau-b coefficients, and Spearman’s correlation coefficients based on the ranks of the variables. The function supports two different methods for dealing with missing values in the data.
COV Function
computes a sample variance-covariance matrix for data. The function supports two different methods for dealing with missing values in the data.
COUNTN Function
counts the number of nonmissing values in a matrix.
COUNTMISS Function
counts the number of missing values in a matrix.
COUNTUNIQUE Function
counts the number of unique values in a matrix.
CUPROD Function
computes the cumulative product of elements in a matrix.
DIF Function
computes the differences between data values and one or more lagged (shifted) values for time series data.
ELEMENT Function
returns a matrix that indicates which elements of one matrix are also elements of a second matrix.
FULL Function
converts a matrix stored in a sparse format into a matrix stored in a dense format.
LAG Function
computes one or more lagged (shifted) values for time series data.
MEAN Function
computes a sample mean of data. The function can compute arithmetic means, trimmed means, and Winsorized means.
PROD Function
computes the product of elements in one or more matrices.
QNTL Call
computes sample quantiles for data.
RANCOMB Function
returns random combinations of n elements taken k at a time.
RANGE Function
returns the range of values for a set of matrices.
RANPERM Function
returns random permutations of n elements.
SHAPECOL Function
reshapes and repeats values by columns.
SQRVECH Function
converts a symmetric matrix which is stored columnwise to a square matrix.
STD Function
computes a sample standard deviation for each column of a data matrix.
SPARSE Function
converts a matrix that contains many zeros into a matrix stored in a sparse format which suitable for use with the ITSOLVER subroutine or the SOLVELIN subroutine.
TABULATE Call
counts the number of elements in each of the unique categories of the argument.
VAR Function
computes a sample variance for each column of a data matrix.
VECH Function
creates a vector from the columns of the lower triangular elements of a matrix.

Changes to the IMLMLIB Library

The CORR module has been removed from the IMLMLIB library. In its place is the built-in CORR function.
The MEDIAN, QUARTILE, and STANDARD modules now support missing values in the data argument.

Documentation Enhancements

The first six chapters of the SAS/IML User's Guide have been completely rewritten in order to provide new users with a gentle introduction to the SAS/IML language. Two new chapters have been written:
  • Chapter 10, Submitting SAS Statements, describes how to call SAS procedures from within PROC IML.
  • Chapter 11, Calling Functions in the R Language, describes how to call R functions from within PROC IML.