我正在搜索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.穆勒
我在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,我可以对此进行测试.)