You can specify a SAS data set by using a literal value, such as “Sashelp.Class,” or by specifying an expression that resolves to the name of a SAS data set. Most of the examples in this chapter use a literal value, such as the following statements:
proc iml; use Sashelp.Class; read all var _NUM_ into X; close Sashelp.Class;
The statements open the Sashelp.Class
data set, read all the numerical variables into a matrix named X
, and close the Sashelp.Class
data set. The previous statements are equivalent to the following statements, which use an expression (which must be enclosed
in parentheses) to specify the data set:
dsname = "Sashelp.Class"; use (dsname); read all var _NUM_ into X; close (dsname);
This alternate syntax is available for specifying a data set name in the CLOSE, CREATE, EDIT, SETIN, SETOUT, SORT, and USE statements.
You can use expressions to interact with a data set whose name is not known until run time. For example, the following statements read several data sets and perform an analysis on each:
lib = "Sashelp"; dsnames = {"Class" "Enso" "Iris"}; do i = 1 to ncol(dsnames); dsname = concat(lib,".",dsnames[i]); use (dsname); /* Sashelp.Class, Sashelp.Enso, etc. */ read all var _NUM_ into X[c=varNames]; /* do something with the data in X */ print dsname varNames; close (dsname); end;
Figure 7.1: Looping over Data Sets
dsname | varNames | ||
---|---|---|---|
Sashelp.Class | Age | Height | Weight |
dsname | varNames | ||
---|---|---|---|
Sashelp.Enso | Month | Year | Pressure |
dsname | varNames | |||
---|---|---|---|---|
Sashelp.Iris | SepalLength | SepalWidth | PetalLength | PetalWidth |