SAS:从Proc SQL创建变量以在宏中使用

时间:2017-10-05 16:59:26

标签: sas

我想计算变量中唯一项的数量(称之为"类别")然后使用该计数来设置SAS宏中的迭代次数(即,我更喜欢没有硬编码迭代次数)。

我可以得到这样的计数:

Cursor

我可以像这样运行一个宏:

proc sql;
        select count(*)
        from (select DISTINCT categories from myData);
quit;

我想知道如何将计数纳入迭代变量,以便宏迭代的次数与变量中的唯一值一样多次"类别"。

很抱歉,如果这令人困惑。很高兴澄清是否需要。提前谢谢。

1 个答案:

答案 0 :(得分:4)

您可以使用into中的proc sql子句来实现此目的:

proc sql noprint;
  select max(age), 
         max(height), 
         max(weight) 
  into :max_age, 
       :max_height, 
       :max_weight 
  from sashelp.class;
quit;

%put &=max_age &=max_height &=max_weight;

<强>结果:

MAX_AGE=      16 MAX_HEIGHT=      72 MAX_WEIGHT=     150

您还可以通过将into子句与separated by子句相结合,将结果列表选择为宏变量:

proc sql noprint;
  select name into :list_of_names separated by ' ' from sashelp.class;
quit;

%put &=list_of_names;

<强>结果:

LIST_OF_NAMES=Alfred Alice Barbara Carol Henry James Jane Janet Jeffrey John Joyce Judy Louise Mary Philip Robert Ronald Thomas

威廉