SAS - Arrays

Gli array in SAS vengono utilizzati per archiviare e recuperare una serie di valori utilizzando un valore di indice. L'indice rappresenta la posizione in un'area di memoria riservata.

Sintassi

In SAS un array viene dichiarato utilizzando la seguente sintassi:

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

Nella sintassi sopra -

  • ARRAY è la parola chiave SAS per dichiarare un array.

  • ARRAY-NAME è il nome dell'array che segue la stessa regola dei nomi delle variabili.

  • SUBSCRIPT è il numero di valori che l'array memorizzerà.

  • ($) è un parametro facoltativo da utilizzare solo se l'array memorizzerà i valori dei caratteri.

  • VARIABLE-LIST è l'elenco facoltativo di variabili che sono i segnaposto per i valori degli array.

  • ARRAY-VALUESsono i valori effettivi archiviati nell'array. Possono essere dichiarati qui o possono essere letti da un file o dataline.

Esempi di dichiarazione di array

Gli array possono essere dichiarati in molti modi utilizzando la sintassi precedente. Di seguito sono riportati gli esempi.

# 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;

Accesso ai valori degli array

È possibile accedere ai valori memorizzati in una matrice utilizzando il printprocedura come mostrato di seguito. Dopo essere stato dichiarato utilizzando uno dei metodi precedenti, i dati vengono forniti utilizzando l'istruzione 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 eseguiamo il codice sopra, produce il seguente risultato:

Utilizzo dell'operatore OF

L'operatore OF viene utilizzato durante l'analisi dei dati da un array per eseguire calcoli sull'intera riga di un array. Nell'esempio seguente applichiamo la Somma e la Media dei valori in ogni riga.

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 eseguiamo il codice sopra, produce il seguente risultato:

Utilizzando l'operatore IN

È inoltre possibile accedere al valore in un array utilizzando l'operatore IN che verifica la presenza di un valore nella riga dell'array. Nell'esempio sottostante controlliamo la disponibilità del colore "Giallo" nei dati. Questo valore fa distinzione tra maiuscole e minuscole.

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 eseguiamo il codice sopra, produce il seguente risultato: