0

我正在尝试遍历一个列表并使用每个列表值来创建一个新表。

为此,我编写了一个宏。

%macro loop(STlist);
%let nwords=%sysfunc(countw(&STlist));

%do i=1 %to &nwords;

%put %scan(&STlist, &i);

%LET ST_CD = %scan(&STlist, &i);

%end;
%mend;

%loop(&STATE);

这是我的状态列表:

%LET STATE = AK AL AZ AR CA CO CT DC DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY;

我每次都尝试使用列表中的每个州缩写创建 proc sql 表。

4

1 回答 1

1

例如,您的代码可能如下所示,它将创建 51 个名为 AK、AL 等的空数据集。

%macro loop(STlist);
  %let nwords=%sysfunc(countw("&STlist"));
  %put nwords=*&nwords.*;

  %do i=1 %to &nwords;
    %LET ST_CD = %scan(&STlist, &i);
    %put ST_CD=*&ST_CD.*;

    /* Create empty data set with one variable value1*/
    proc sql;
      create table &ST_CD.
      (value1 char 100);
    quit;
  %end;
%mend;
于 2019-09-12T14:29:34.767 回答