Учебники

SAS — Массивы

Массивы в SAS используются для хранения и извлечения ряда значений с использованием значения индекса. Индекс представляет местоположение в зарезервированной области памяти.

Синтаксис

В SAS массив объявляется с использованием следующего синтаксиса —

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

В приведенном выше синтаксисе —

  • ARRAY — это ключевое слово SAS для объявления массива.

  • ARRAY-NAME — это имя массива, которое следует тому же правилу, что и имена переменных.

  • SUBSCRIPT — это число значений, которые массив будет хранить.

  • ($) является необязательным параметром, который используется только в том случае, если массив будет хранить символьные значения.

  • VARIABLE-LIST — необязательный список переменных, которые являются заполнителями для значений массива.

  • ARRAY-VALUES — это фактические значения, которые хранятся в массиве. Они могут быть объявлены здесь или могут быть прочитаны из файла или данных.

ARRAY — это ключевое слово SAS для объявления массива.

ARRAY-NAME — это имя массива, которое следует тому же правилу, что и имена переменных.

SUBSCRIPT — это число значений, которые массив будет хранить.

($) является необязательным параметром, который используется только в том случае, если массив будет хранить символьные значения.

VARIABLE-LIST — необязательный список переменных, которые являются заполнителями для значений массива.

ARRAY-VALUES — это фактические значения, которые хранятся в массиве. Они могут быть объявлены здесь или могут быть прочитаны из файла или данных.

Примеры декларации массива

Массивы могут быть объявлены разными способами с использованием приведенного выше синтаксиса. Ниже приведены примеры.

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

Доступ к значениям массива

Доступ к значениям, хранящимся в массиве, можно получить с помощью процедуры печати , как показано ниже. После того, как оно объявлено с использованием одного из вышеперечисленных методов, данные передаются с помощью оператора 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;

Когда мы выполняем приведенный выше код, он дает следующий результат —

array_character_2_result

Использование оператора OF

Оператор OF используется при анализе данных формата Array для выполнения вычислений по всей строке массива. В приведенном ниже примере мы применяем сумму и среднее значение в каждой строке.

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;

Когда мы выполняем приведенный выше код, он дает следующий результат —

array_of_result

Использование оператора IN

Доступ к значению в массиве также можно получить с помощью оператора IN, который проверяет наличие значения в строке массива. В приведенном ниже примере мы проверяем наличие цвета «Желтый» в данных. Это значение чувствительно к регистру.

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;

Когда мы выполняем приведенный выше код, он дает следующий результат —