Sas 简明教程
SAS - Arrays
SAS 中的数组用于使用索引值存储和检索一系列值。索引表示保留内存区域中的位置。
Syntax
在 SAS 中,使用以下语法声明数组 −
ARRAY ARRAY-NAME(SUBSCRIPT) ($) VARIABLE-LIST ARRAY-VALUES
在以上语法中 −
-
ARRAY 是用于声明数组的 SAS 关键字。
-
ARRAY-NAME 是数组的名称,它遵循与变量名称相同的规则。
-
SUBSCRIPT 是数组将存储的值的数量。
-
($) 是仅在数组将存储字符值时使用的可选参数。
-
VARIABLE-LIST 是作为数组值占位符的可变变量的可选列表。
-
ARRAY-VALUES 是存储在数组中的实际值。它们可以在这里声明,也可以从文件或文件行中读取。
Examples of Array Declaration
可以使用以上语法以多种方式声明数组。以下为示例。
# 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;
Accessing Array Values
可以通过使用 print 过程来访问存储在数组中的值,如下所示。在一个数组值是用上述其中一种方法声明之后,使用 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;
当我们执行以上代码时,会产生以下结果 -
Using the OF operator
当分析来自数组的数据以对数组的整行执行计算时,OF 运算符将用于。在下面的示例中,我们对每一行的值应用总和和平均值。
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;
当我们执行以上代码时,会产生以下结果 -
Using the IN operator
还可以使用 IN 运算符访问数组中的值,该运算符检查数组行中是否存在某个值。在下面的示例中,我们检查数据中是否有颜色 “Yellow” 。此值为区分大小写。
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;
当我们执行以上代码时,会产生以下结果 -