SAS 以宏变量为维度的二维数组

SAS Two dimensional array with macro variables as dimensions

请问你能帮忙解答一下吗,

SAS中如何根据宏变量定义灵活维度的二维数组?

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

ARRAY样条{&a.,&b.} B1-B&Dim.;

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

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

感谢您的帮助!

宏变量赋值时不能有数学表达式。

所以如果 a = 4 且 b = 5

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

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

为此,您必须在数据步中进行数学运算:

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

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

我还想知道你的屏幕截图,似乎 B = 5-1(作为字符串),所以我猜你在赋值 b 时已经做了数学运算,但失败了... %让 b = 5-1;解析为字符串“5-1”,而不是 4...

因此在您的示例中,所有内容都解析为:

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

我猜你想要

    ARRAY Spline{4,4} B1-B16;

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