【问题标题】:SAS Two dimensional array with macro variables as dimensionsSAS 以宏变量为维度的二维数组
【发布时间】:2015-07-16 10:22:33
【问题描述】:

请你帮忙解答一下这个问题,

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

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

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

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

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

感谢您的帮助!

【问题讨论】:

  • 1.图像模糊。 2. SAS数组必须有固定的维度,并且只能在数据步内使用。

标签: multidimensional-array sas-macro


【解决方案1】:

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

所以如果 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;

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

【讨论】:

  • "%let myDIM = %sysevalf(4*5);"将创建一个值为“20”的宏变量
猜你喜欢
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
相关资源
最近更新 更多