"适用于SAS 9.3中的等效循环"

jom*_*ler 7 sas sas-macro

我正在搜索SAS 9.3宏语言中的for循环(如Python或R中)的等效内容.该DO循环似乎的是解决办法,但正是我以前不工作,因为我想要的.我在一个带有DO循环的数据步骤中创建了一种方法,但它不适用于宏语言.例如,在数据步骤中,此代码正在运行:

DATA _NULL_;
  DO i = 1,3,5,9;
    PUT i;
  END;
RUN;
Run Code Online (Sandbox Code Playgroud)

然后按预期的日志提示:

1
3
5
9
Run Code Online (Sandbox Code Playgroud)

当我尝试在宏中使用%DO循环时,我有一个错误.

%MACRO test();
  %DO i = 1,2,4,9 ;
    %PUT i = &i;
  %END;
%MEND;

%test();
Run Code Online (Sandbox Code Playgroud)

日志提示这些消息:

ERROR: Expected %TO not found in %DO statement.
ERROR: A dummy macro will be compiled
Run Code Online (Sandbox Code Playgroud)

我是SAS和stackoverflow的新手,所以我希望我的问题不是太愚蠢.在Python和R中执行此操作非常简单,因此必须有一种简单的方法在SAS中执行此操作.

谢谢你的帮助 - J.穆勒

Sim*_*son 6

我在SAS宏语言中遇到的最接近这种模式的是:

%MACRO test();

%let j=1;
%let vals=1 2 4 9;
%do %while(%scan(&vals,&j) ne );
  %let i=%scan(&vals, &j);

  %put &i;

  %let j=%eval(&j+1);
%end;
%MEND;

%test();
Run Code Online (Sandbox Code Playgroud)

(警告:未经测试,因为我不再安装SAS,我可以对此进行测试.)