📅  最后修改于: 2021-01-08 14:25:43             🧑  作者: Mango
数组是一种数据结构,用于存储元素的固定大小集合。数组只能存储相同数据类型的元素。
它可以存储数据集合,但通常用于存储相同数据类型的变量集合。
数组使用索引存储元素。它减少了代码的行数。
在SAS中,阵列执行与上述相同的任务。这意味着它用于通过使用索引值来存储和检索一系列值。索引表示元素在保留存储区中的位置。
ARRAY ARRAY_NAME(SUBSCRIPT) ($) VARIABLE-LIST ARRAY-VALUES
哪里,
我们可以使用上述语法以多种方式声明Array。以下是数组声明的示例。
ARRAYNUMBER[5] (42 88 67 62 44);
ARRAYALPHABET(0:8) A B C D E F G H ;
ARRAY SEARCH(1:5) $ Q1-Q5;
ARRAYFEEDBACK(*) A1-A100;
声明之后,我们可以使用DATALINES语句在Array中提供数据值,并且可以使用PRINT过程访问这些存储的值。
在下面的示例中,我们将存储和访问Array的值。
DATA Array;
INPUT a1 $ a2 $ a3 $ a4 $ a5 $;
ARRAY animals(5) $ a1-a5;
DATALINES;
Lion Elephant Horse Deer Fox
;
RUN;
PROC PRINT DATA = Array;
RUN;
在SAS Studio中执行以上代码:
输出:
正如我们在输出中看到的,数组的所有值均已存储和访问。
连接数组的多个值
我们可以通过声明一个新变量来连接Array的多个值。
例:
DATA Array;
INPUT a1 $ a2 $ a3 $ a4 $ a5 $;
ARRAY animals(5) $ a1-a5;
mix = a1||'+'||a2;
DATALINES;
Lion Elephant Horse Deer Fox
;
RUN;
PROC PRINT DATA = Array;
RUN;
Using the OF operator
输出:
正如我们在输出中看到的,两个值,即a1和a2,都已串联到变量mix中。
在分析数组的数据格式以计算数组的整个行时,将使用OF运算符。在以下示例中,我们将计算每行中值的总和和均值。
DATA Array_OF;
INPUT A1 A2 A3 A4;
ARRAY A(4) A1-A4;
SUM = SUM(OF A(*));
MEAN = MEAN(OF A(*));
MIN = MIN(OF A(*));
DATALINES;
22 4 50 12
43 55 32 19
;
RUN;
PROC PRINT DATA = Array_OF;
RUN;
在SAS Studio中执行以上代码:
输出:
正如我们在输出中看到的,已经计算了整行。
在数组中,我们可以使用IN运算符访问特定值。 IN Operator会检查数组行中是否存在特定值的状态。在下面的示例中,我们将检查数据集中动物“老虎”的可用性。此值区分大小写。
DATA Array_in;
INPUT A1 $ A2 $ A3 $ A4 $;
ARRAY animals(4) A1-A4;
IF 'Lion' IN COLOURS THEN available = 'Yes';ELSE available = 'No';
DATALINES;
Lion Elephant Horse Deer Fox
;
RUN;
PROC PRINT DATA = Array_in;
RUN;
在SAS Studio中执行以上代码:
输出:
从输出中可以看到,Lion存在于数据集中,这就是为什么它在“可用”列中显示“是”的原因。