我想计算变量中唯一项的数量(称之为"类别")然后使用该计数来设置SAS宏中的迭代次数(即,我更喜欢没有硬编码迭代次数)。
我可以得到这样的计数:
Cursor
我可以像这样运行一个宏:
proc sql;
select count(*)
from (select DISTINCT categories from myData);
quit;
我想知道如何将计数纳入迭代变量,以便宏迭代的次数与变量中的唯一值一样多次"类别"。
很抱歉,如果这令人困惑。很高兴澄清是否需要。提前谢谢。
答案 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
威廉