SAS: matrices

Las matrices en SAS se utilizan para almacenar y recuperar una serie de valores utilizando un valor de índice. El índice representa la ubicación en un área de memoria reservada.

Sintaxis

En SAS, una matriz se declara utilizando la siguiente sintaxis:

ARRAY ARRAY-NAME(SUBSCRIPT) ($) VARIABLE-LIST ARRAY-VALUES

En la sintaxis anterior:

  • ARRAY es la palabra clave SAS para declarar una matriz.

  • ARRAY-NAME es el nombre de la matriz que sigue la misma regla que los nombres de variables.

  • SUBSCRIPT es el número de valores que va a almacenar la matriz.

  • ($) es un parámetro opcional que se utilizará solo si la matriz va a almacenar valores de caracteres.

  • VARIABLE-LIST es la lista opcional de variables que son los marcadores de posición para los valores de matriz.

  • ARRAY-VALUESson los valores reales que se almacenan en la matriz. Se pueden declarar aquí o se pueden leer desde un archivo o línea de datos.

Ejemplos de declaración de matriz

Las matrices se pueden declarar de muchas formas utilizando la sintaxis anterior. A continuación se muestran los ejemplos.

# Declare an array of length 5 named AGE with values.
ARRAY AGE[5] (12 18 5 62 44);

# Declare an array of length 5 named COUNTRIES with values starting at index 0.
ARRAY COUNTRIES(0:8) A B C D E F G H I;

# Declare an array of length 5 named QUESTS which contain character values.
ARRAY QUESTS(1:5) $ Q1-Q5;

# Declare an array of required length as per the number of values supplied.
ARRAY ANSWER(*) A1-A100;

Acceder a los valores de matriz

Se puede acceder a los valores almacenados en una matriz mediante el printprocedimiento como se muestra a continuación. Después de que se declara utilizando uno de los métodos anteriores, los datos se suministran utilizando la sentencia DATALINES.

DATA array_example;
INPUT a1 $ a2 $ a3 $ a4 $ a5 $;
ARRAY colours(5) $ a1-a5;
mix = a1||'+'||a2;
DATALINES;
yello pink orange green blue
;
RUN;
PROC PRINT DATA = array_example;
RUN;

Cuando ejecutamos el código anterior, produce el siguiente resultado:

Usando el operador OF

El operador OF se utiliza al analizar los datos de una matriz para realizar cálculos en toda la fila de una matriz. En el siguiente ejemplo, aplicamos la suma y la media de los valores en cada fila.

DATA array_example_OF;
   INPUT A1 A2 A3 A4;
   ARRAY A(4) A1-A4;
   A_SUM = SUM(OF A(*));
   A_MEAN = MEAN(OF A(*));
   A_MIN = MIN(OF A(*));
   DATALINES;
   21 4 52 11
   96 25 42 6
   ;
   RUN;
   PROC PRINT DATA = array_example_OF;
   RUN;

Cuando ejecutamos el código anterior, produce el siguiente resultado:

Usando el operador IN

También se puede acceder al valor en una matriz usando el operador IN que verifica la presencia de un valor en la fila de la matriz. En el siguiente ejemplo, verificamos la disponibilidad del color "Amarillo" en los datos. Este valor distingue entre mayúsculas y minúsculas.

DATA array_in_example;
   INPUT A1 $ A2 $ A3 $ A4 $;
   ARRAY COLOURS(4) A1-A4;
   IF 'yellow' IN COLOURS THEN available = 'Yes';ELSE available = 'No';
   DATALINES;
   Orange pink violet yellow
   ;
   RUN;
   PROC PRINT DATA = array_in_example;
   RUN;

Cuando ejecutamos el código anterior, produce el siguiente resultado: