【问题标题】:Is it possible to loop through an entire process flow n times?是否可以循环整个流程 n 次?
【发布时间】:2018-04-11 08:27:45
【问题描述】:

我目前正在从事一个重要的项目,我们使用逻辑回归来预测事件。

问题是,我需要生成 2 个不同的 1500 人样本,然后处理逻辑回归。整个过程应至少循环 50 次。你知道循环 50 次的方法吗?

我尝试了一个宏:

%macro repeat
    %do i = 1 %to 50;
      [...]
      output;
      end;
    run;
%mend;
%repeat(50);

但这行不通。你有什么想法吗?

【问题讨论】:

  • 请提供导致问题的代码minimal, verifiable and complete example,并包含相应的日志输出。
  • 在您的示例代码中,%do 没有匹配的 %end,这应该会在尝试编译宏时触发明显的错误消息,但如果没有看到更完整的代码示例,这是不可能的说这是否是唯一的问题。
  • SAS 方式是一次生成所有样本,2*1500*50 = 150,000,仍然很小。 SAS 可以通过完全避免宏的 BY 组处理轻松处理该问题。上面的论文详细介绍了如何实现这一点。
  • 谢谢 Reeza,我没想过这种解决问题的方法。但这似乎是一种更有效的随机抽样方法,因为我只选择一次观察,它避免了获得相同观察的副本,就像我随机抽样 50 次一样。

标签: sql sas sas-macro


【解决方案1】:

为了解决这个问题,我不得不欺骗编辑器,让它认为它已经到达了整个宏的末尾。只需在%macro 下插入以下代码:

%local DUMMY;
%let DUMMY = %nrstr(%mend);

如果您要重复 SURVEYSELECT,只需添加 REPS=n

您可以在此处查看完整答案: Why does my code inside my macro is not taken into account?

【讨论】:

    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多