Examples of Array Processing


Example 1: Using Character Variables in an Array

You can specify character variables and their lengths in ARRAY statements. The following example groups variables into two arrays, NAMES and CAPITALS. The dollar sign ($) tells SAS to create the elements as character variables. If the variables have already been declared as character variables, a dollar sign in the array is not necessary. The INPUT statement reads all the variables in array NAMES.

The statement inside the DO loop uses the UPCASE function to change the values of the variables in array NAMES to uppercase and then store the uppercase values in the variables in the CAPITALS array.

 options nodate pageno=1 linesize=80 pagesize=60;   data text;      array names{*} $ n1-n10;      array capitals{*} $ c1-c10;      input names{*};         do i=1 to 10;            capitals{i}=upcase(names{i});         end;      datalines;   smithers michaels gonzalez hurth frank bleigh   rounder joseph peters sam   ;   proc print data=text;      title 'Names Changed from Lowercase to Uppercase';   run; 

The following output shows the TEXT data set.

Output 25.3: Using Character Variables in an Array
start example
 Names Changed from Lowercase to Uppercase                      1   Obs   n1       n2       n3     n4    n5     n6     n7      n8     n9   n10    1 smithers michaels gonzalez hurth frank bleigh rounder joseph peters sam   Obs   c1       c2       c3     c4    c5     c6     c7      c8     c9   c10  i    1 SMITHERS MICHAELS GONZALEZ HURTH FRANK BLEIGH ROUNDER JOSEPH PETERS SAM 11 
end example
 

Example 2: Assigning Initial Values to the Elements of an Array

This example creates variables in the array TEST and assigns them the initial values 90, 80, and 70. It reads values into another array named SCORE and compares each element of SCORE to the corresponding element of TEST. If the value of the element in SCORE is greater than or equal to the value of the element in TEST, the variable NewScore is assigned the value in the element SCORE, and the OUTPUT statement writes the observation to the SAS data set.

The INPUT statement reads a value for the variable named ID and then reads values for all the variables in the SCORE array.

 options nodate pageno=1 linesize=80 pagesize=60;   data score1(drop=i);      array test{3} t1-t3 (90 80 70);      array score{3} s1-s3;      input id score{*};      do i=1 to 3;         if score{i}>=test{i} then            do;               NewScore=score{i};               output;            end;      end;      datalines;   1234  99 60 82   5678  80 85 75   ;   proc print noobs data=score1;      title 'Data Set SCORE1';   run; 

The following output shows the SCORE1 data set.

Output 25.4: Assigning Initial Values to the Elements of an Array
start example
 Data Set SCORE1                         1                                          New            t1    t2    t3    s1    s2    s3    id    Score            90    80    70    99    60    82    1234    99            90    80    70    99    60    82    1234    82            90    80    70    80    85    75    5678    85            90    80    70    80    85    75    5678    75 
end example
 

Example 3: Creating an Array for Temporary Use in the Current DATA Step

When elements of an array are constants that are needed only for the duration of the DATA step, you can omit variables from an array group and instead use temporary array elements. You refer to temporary data elements by the array name and dimension. Although they behave like variables, temporary array elements do not have names, and they do not appear in the output data set. Temporary array elements are automatically retained, instead of being reset to missing at the beginning of the next iteration of the DATA step.

To create a temporary array, use the _TEMPORARY_ argument. The following example creates a temporary array named TEST:

 options nodate pageno=1 linesize=80 pagesize=60;   data score2(drop=i);         array test{3} _temporary_ (90 80 70);         array score{3} s1-s3;         input id score{*};            do i=1 to 3;               if score{i}>=test{i} then                  do;                     NewScore=score{i};                     output;                  end;            end;         datalines;      1234 99 60 82      5678 80 85 75      ;      proc print noobs data=score2;         title 'Data Set SCORE2';      run; 

The following output shows the SCORE2 data set.

Output 25.5: Using _TEMPORARY_ Arrays
start example
 Data Set SCORE2                             1                                                     New                             s1    s2    s3    id    Score                             99    60    82    1234    99                             99    60    82    1234    82                             80    85    75    5678    85                             80    85    75    5678    75 
end example
 

Example 4: Performing an Action on All Numeric Variables

This example multiplies all the numeric variables in array TEST by 3.

 options nodate pageno=1 linesize=80 pagesize=60;   data sales;      infile datalines;      input Value1 Value2 Value3 Value4;      datalines;   11 56 58 61   22 51 57 61   22 49 53 58   ;   data convert(drop=i);      set sales;      array test{*} _numeric_;      do i=1 to dim(test);         test{i} = (test{i}*3);      end;   run;   proc print data=convert;      title 'Data Set CONVERT';   run; 

The following output shows the CONVERT data set.

Output 25.6: Output From Using a _NUMERIC_ Variable List
start example
 Data Set CONVERT                             1                   Obs    Value1    Value2    Value3    Value4                    1       33        168       174       183                    2       66        153       171       183                    3       66        147       159       174 
end example
 



SAS 9.1.3 Language Reference. Concepts
SAS 9.1.3 Language Reference: Concepts, Third Edition, Volumes 1 and 2
ISBN: 1590478401
EAN: 2147483647
Year: 2004
Pages: 258

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net