SAS:从Proc SQL创建变量以在宏中使用
我想计算变量中唯一项的数量(称之为“类别”),然后使用该计数设置SAS宏中的迭代次数(即,我不希望硬编码迭代次数) 我可以得到这样的计数:SAS:从Proc SQL创建变量以在宏中使用,sas,Sas,我想计算变量中唯一项的数量(称之为“类别”),然后使用该计数设置SAS宏中的迭代次数(即,我不希望硬编码迭代次数) 我可以得到这样的计数: proc sql; select count(*) from (select DISTINCT categories from myData); quit; %macro superFreq; %do i=1 %to &iterationVariable; Proc freq data=myD
proc sql;
select count(*)
from (select DISTINCT categories from myData);
quit;
%macro superFreq;
%do i=1 %to &iterationVariable;
Proc freq data=myData;
table var&i / out=var&i||freq;
run;
%mend superFreq;
%superFreq
我可以像这样运行宏:
proc sql;
select count(*)
from (select DISTINCT categories from myData);
quit;
%macro superFreq;
%do i=1 %to &iterationVariable;
Proc freq data=myData;
table var&i / out=var&i||freq;
run;
%mend superFreq;
%superFreq
我想知道如何将计数放入迭代变量中,这样宏的迭代次数与变量“categories”中的唯一值相同
抱歉,这让人困惑。如果需要,很高兴澄清。提前感谢。您可以通过使用
proc sql
中的into
子句来实现这一点:
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
LIST_OF_NAMES=Alfred Alice Barbara Carol Henry James Jane Janet Jeffrey John Joyce Judy Louise Mary Philip Robert Ronald Thomas
您还可以通过将放入
子句与由子句分隔的组合,将结果列表选择到宏变量中:
proc sql noprint;
select name into :list_of_names separated by ' ' from sashelp.class;
quit;
%put &=list_of_names;
结果:
MAX_AGE= 16 MAX_HEIGHT= 72 MAX_WEIGHT= 150
LIST_OF_NAMES=Alfred Alice Barbara Carol Henry James Jane Janet Jeffrey John Joyce Judy Louise Mary Philip Robert Ronald Thomas
威廉感谢您的全面回复。我是SAS宏的新手,所以我期待着玩这个。