我试图在proc freq中的变量列表(varlistc)中使用所有变量名。但是,PROC FREQ仅为varlistc中的最后一个变量名提供输出。我该如何解决这个问题?
proc sql noprint;
select name
into :varlistc separated by ' '
from data2c;
quit;
proc freq data=&data1;
table &varlistc*site;
run;
答案 0 :(得分:4)
仅供参考,PROC FREQ还允许更清晰的语法:
第一个括号中的列表中的每个变量都在asterix之后交叉应用于变量(或另一个括号中的变量列表)。
proc sql noprint;
select name
into :varlistc separated by ' '
from sashelp.class;
quit;
proc freq data=&data1;
table ( &varlistc ) * site;
run;
也可以是例如:
proc freq data=&data1;
table ( &varlistc ) * (site1 site2);
run;
答案 1 :(得分:1)
在宏变量中添加更多内容以使其正常工作。
proc sql noprint;
select cats(name,'*site')
into :varlistc separated by ' '
from data2c;
quit;
proc freq data=&data1;
table &varlistc;
run;
这将生成屏幕上的所有表格。如果要将它们输出到数据集,如果添加除最后一个表之外不会输出的/out
;你有两个选择。
ods output
将所有输出转换为一个或多个数据集/out=<whatever>
。select into