SAS - 数组



SAS 中的数组用于使用索引值存储和检索一系列值。索引表示保留内存区域中的位置。

语法

在 SAS 中,数组的声明使用以下语法:

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

在上述语法中:

  • ARRAY 是声明数组的 SAS 关键字。

  • 数组名 是数组的名称,遵循与变量名相同的规则。

  • 下标 是数组将存储的值的数量。

  • ($) 是一个可选参数,仅当数组将存储字符值时才使用。

  • 变量列表 是可选的变量列表,它们是数组值的占位符。

  • 数组值 是存储在数组中的实际值。它们可以在这里声明,也可以从文件或数据行读取。

数组声明示例

可以使用上述语法以多种方式声明数组。以下是示例。

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

访问数组值

可以使用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;

执行上述代码时,将产生以下结果:

array_character_2_result

使用 OF 运算符

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;

执行上述代码时,将产生以下结果:

array_of_result

使用 IN 运算符

也可以使用 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;

执行上述代码时,将产生以下结果:

array_in_result
广告