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;
所以在数据步中分离所有数学运算...
请问你能帮忙解答一下吗,
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;
所以在数据步中分离所有数学运算...