SAS二维数组,宏变量为维度

时间:2015-07-16 10:22:33

标签: multidimensional-array sas-macro

请帮助解决这个问题,

如何根据SAS中的宏变量定义具有灵活尺寸的二维数组?

%LET Dim =& a。*& b。;

ARRAY Spline {& a。,& b。} B1-B& Dim .;

我尝试使用上面的代码,但它给出了这些错误:

http://s17.postimg.org/v5nkxw8hb/Sans_titre.png

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在宏变量分配期间,你不能有数学表达式。

所以如果a = 4且b = 5

%LET Dim =& a。*& b。;

解析为DIM =" 4 * 5"作为字符串,但你想要20。

要做到这一点,你必须在datastep中进行数学运算:

data _null_;
    temp= &a * &b;
    call symputx('DIM', temp);

    ARRAY Spline{&a.,&b.} B1-B&DIM;
run;

我也想知道你的截图,似乎B = 5-1(作为字符串),所以我猜你在分配b时已经做了一个数学运算,哪个失败... %let b = 5-1;解析为字符串" 5-1",而不是4 ...

所以在你的例子中,一切都解析为:

 ARRAY Spline{4,5-1} B1-B4*5-1;

我想你想要

    ARRAY Spline{4,4} B1-B16;

所以在datastep中分离所有数学运算......