在SAS中定义数组的问题

时间:2012-11-08 16:32:36

标签: arrays sas

我正在尝试使用以下代码定义数组:

data all_dates;
  array arr[*] _temporary_ (1 2 3 4 5);
run;

它给了我这样的信息:

ERROR: The non-variable based array arr has been defined with zero elements.

查看the documentation示例,我看不出为什么这不起作用。我做错了什么或者这是不允许的?如果不允许什么是替代等效方法?

2 个答案:

答案 0 :(得分:1)

啊没关系 - 文档确实说明了:

You cannot use the asterisk with _TEMPORARY_ arrays or when you define a multidimensional array.

我想我必须事先计算出我需要的元素数量,然后使用:

data all_dates;
  array arr[*] a1-a5 (1 2 3 4 5);
  drop a1-a5;
run;

答案 1 :(得分:1)

临时数组的一般解决方案是过度定义临时数组。由于它不在PDV中,并且没有写出(显然),你可以简单地将其定义为50或100或任何超过最大值的安全数字 - 这样做几乎不会花费任何性能。

或者,如果“安全号码”对于您想要的内存分配(例如,数万个)来说太大,请使用宏变量并预先计算该号码。鉴于你写出

(1 2 3 4 5)

创建此列表时,您应该可以计算所需变量的数量。