SAS - Matrizes
Matrizes no SAS são usadas para armazenar e recuperar uma série de valores usando um valor de índice. O índice representa a localização em uma área de memória reservada.
Sintaxe
No SAS, uma matriz é declarada usando a seguinte sintaxe -
ARRAY ARRAY-NAME(SUBSCRIPT) ($) VARIABLE-LIST ARRAY-VALUES
Na sintaxe acima -
ARRAY é a palavra-chave do SAS para declarar uma matriz.
ARRAY-NAME é o nome da matriz que segue a mesma regra dos nomes de variáveis.
SUBSCRIPT é o número de valores que a matriz irá armazenar.
($) é um parâmetro opcional a ser usado apenas se a matriz for armazenar valores de caracteres.
VARIABLE-LIST é a lista opcional de variáveis que ocupam o lugar dos valores da matriz.
ARRAY-VALUESsão os valores reais armazenados na matriz. Eles podem ser declarados aqui ou podem ser lidos de um arquivo ou dataline.
Exemplos de declaração de matriz
Os arrays podem ser declarados de várias maneiras usando a sintaxe acima. Abaixo estão os exemplos.
# 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;
Acessando Valores de Matriz
Os valores armazenados em uma matriz podem ser acessados usando o printprocedimento conforme mostrado abaixo. Após serem declarados usando um dos métodos acima, os dados são fornecidos usando a instrução 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;
Quando executamos o código acima, ele produz o seguinte resultado -
Usando o operador OF
O operador OF é usado ao analisar os dados que formam uma matriz para realizar cálculos em toda a linha de uma matriz. No exemplo abaixo, aplicamos a Soma e a Média dos valores em cada linha.
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;
Quando executamos o código acima, ele produz o seguinte resultado -
Usando o operador IN
O valor em uma matriz também pode ser acessado usando o operador IN, que verifica a presença de um valor na linha da matriz. No exemplo abaixo verificamos a disponibilidade da cor "Amarelo" nos dados. Este valor diferencia maiúsculas de 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;
Quando executamos o código acima, ele produz o seguinte resultado -