Массивы в 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;
Когда мы выполняем приведенный выше код, он дает следующий результат —
Использование оператора 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;
Когда мы выполняем приведенный выше код, он дает следующий результат —
Использование оператора 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;
Когда мы выполняем приведенный выше код, он дает следующий результат —