sas array statement

7
SAS ARRAY Statement A set of variables grouped together for the duration of a data step by being given a name in an ARRAY statement 4/18/2015 Array Statement 1

Upload: ravi-mandal

Post on 18-Jul-2015

57 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Sas array statement

SAS ARRAY StatementA set of variables grouped together for the duration of a data step by being given a name in

an ARRAY statement

4/18/2015 Array Statement 1

Page 2: Sas array statement

SyntaxARRAY array-name { subscript } <$><length>

<array-elements> <(initial-value-list)>;

array-name

specifies the name of the array

Restriction : Array-name must be a SAS name that is not the name of a SAS variable in the same DATA step.CAUTION:

Using the name of a SAS function as an array name can cause unpredictable results.

If you inadvertently use a function name as the name of the array, SAS treats parenthetical references that involve the name as array references, not function references, for the duration of the DATA step. A warning message is written to the SAS log.

{subscript}

describes the number and arrangement of elements in the array by using an asterisk, a number, or a range of numbers. Subscript has one of

these forms:

{dimension-size(s)}

specifies the number of elements in each dimension of the array. Dimension-size is a numeric representation of either the number of elements in

a one-dimensional array or the number of elements in each dimension of a multidimensional array.

You can enclose the subscript in braces ({}), brackets ( [ ] ) or parentheses (( )).

{<lower :>upper<, ...<lower :> upper>}

are the bounds of each dimension of an array, where lower is the lower bound of that dimension and upper is the upper bound.

{*} specifies that SAS is to determine the subscript by counting the variables in the array. When you specify the asterisk, also include array-

elements.

Restriction: You cannot use the asterisk with _TEMPORARY_ arrays or when you define a multidimensional array.

Arguments

$ specifies that the elements in the array are character elements.

4/18/2015 Array Statement 2

Page 3: Sas array statement

SyntaxARRAY array-name { subscript } <$><length>

<array-elements> <(initial-value-list)>;

length

specifies the length of elements in the array that have not been previously assigned a length.

array-elements

specifies the names of the elements that make up the array. Array-elements must be either all numeric or all character, and they can be listed in

any order. The elements can be

variables

lists variable names.

These SAS variable lists enable you to reference variables that have been previously defined in the same DATA step:

_NUMERIC_

specifies all numeric variables.

_CHARACTER_

specifies all character variables.

_TEMPORARY_

creates a list of temporary data elements.

Temporary data elements can be numeric or character.

• Temporary data elements behave like DATA step variables with these exceptions:

• They do not have names. Refer to temporary data elements by the array name and dimension.

• They do not appear in the output data set.

• You cannot use the special subscript asterisk (*) to refer to all the elements.

• Temporary data element values are always automatically retained, rather than being reset to missing at the beginning of the next

iteration of the DATA step.

4/18/2015 Array Statement 3

Page 4: Sas array statement

(initial-value-list)

gives initial values for the corresponding elements in the array. The values for elements can be numbers or character strings. You must enclose all

character strings in quotation marks. To specify one or more initial values directly, use the following format:

The following examples show how to use the iteration factor and nested sub lists. All of these ARRAY statements contain the same initial value list:

•ARRAY x{10} x1-x10 (10*5);

•ARRAY x{10} x1-x10 (5*(5 5));

•ARRAY x{10} x1-x10 (5 5 3*(5 5) 5 5);

•ARRAY x{10} x1-x10 (2*(5 5) 5 5 2*(5 5));

•ARRAY x{10} x1-x10 (2*(5 2*(5 5)));

SyntaxARRAY array-name { subscript } <$><length>

<array-elements> <(initial-value-list)>;

Details

The ARRAY statement defines a set of elements that you plan to process as a group. You refer to elements of the array by the array name

and subscript. Because you usually want to process more than one element in an array, arrays are often referenced within DO groups.

Comparisons

• Arrays in the SAS language are different from arrays in many other languages. A SAS array is simply a convenient way of temporarily

identifying a group of variables. It is not a data structure, and array-name is not a variable.

• An ARRAY statement defines an array. An array reference uses an array element in a program statement.

4/18/2015 Array Statement 4

Page 5: Sas array statement

Examples

Example 1: Defining Arrays•array rain {5} janr febr marr aprr mayr;

•array days{7} d1-d7;

•array month{*} jan feb jul oct nov;

•array x{*} _NUMERIC_;

•array qbx{10};

•array meal{3};

Example 2: Assigning Initial

Numeric Values•array test{4} t1 t2 t3 t4 (90 80 70 70);

•array test{4} t1-t4 (90 80 2*70);

•array test{4} _TEMPORARY_ (90 80 70 70);

Example 3: Defining Initial

Character Values•array test2{*} $ a1 a2 a3 ('a','b','c');

Example 4: Defining More

Advanced Arrays•array new{2:5} green jacobs denato fetzer;

•array x{5,3} score1-score15;

•array test{3:4,3:7} test1-test10;

•array temp{0:999} _TEMPORARY_;

•array x{10} (2*1:5);

4/18/2015 Array Statement 5

Page 6: Sas array statement

Example 5: Creating a Range of Variable Names That

Have Leading ZerosThe following example shows that you can create a range of variable names that have leading zeros. Each

variable name has a length of three characters, and the names sort correctly (A01, A02, ... A10). Without

leading zeros, the variable names would sort in the following order: A1, A10, A2, ... A9.

options pageno=1 nodate ps=64 ls=80;

data test (drop=i);

array a(10) A01-A10;

do i=1 to 10;

a(i)=i; end;

run;

proc print noobs data=test;

run;

4/18/2015 Array Statement 6

Page 7: Sas array statement

4/18/2015 Array Statement 7

Questions