【问题标题】:SAS Macro QuerySAS 宏查询
【发布时间】:2017-12-05 19:01:54
【问题描述】:

我在使用以下 %macro 进行回归时遇到问题。

基本上,我希望它在 i=j、i=1 到 12 和 j=1 到 12 时运行。

  %macro reg(num=);
    %do i=1 %to #
    %do j=1 %to #
    proc reg data=ccy.eur; *Specify Currency Data Set Here;
    model Ft_leadSt&i = Ft_St&j;
    where &i=&j;
    ods output parameterestimates (persist) =dpara1;
    run;
    %end;
%end;
%mend;
%reg(num=12)

问题是当 i=9 和 j=9 时我的输出似乎停止了。我一直无法弄清楚为什么?

数据截图

【问题讨论】:

  • 输入的屏幕截图也会有所帮助,看起来在 'dpara1' 为 9 之后没有匹配项。
  • 比@Alam - 很抱歉

标签: macros sas ods


【解决方案1】:

我会在没有双循环的情况下重写它,并且只有 1 个 PROC REG 语句:

  %macro reg(num=);
    proc reg data=ccy.eur; *Specify Currency Data Set Here;
    ods output parameterestimates (persist) =dpara1;
    var FT_leads1 - FT_leads&n FT_St1 - FT_St&n;
    %do i=1 %to #
       _&i: model Ft_leadSt&i = Ft_St&i;
       run;
    %end;
    quit;
  %mend;
%reg(num=12)

确保数据集中有这些变量。

【讨论】:

  • @dompass 非常感谢 - 我收到以下错误消息 错误:有 1 个未关闭的 %DO 语句。不会编译宏 REG。错误:将编译一个虚拟宏。 1473 %reg(num=12) - 180 警告:未解决宏 REG 的明显调用。错误 180-322:语句无效或使用顺序不正确
  • @wazza2013 抱歉,我遗漏了%end; 我已为您更新了。
猜你喜欢
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多