如何在进程频率内使用变量列表中的所有变量名



我试图使用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;

作为参考,PROC FREQ还允许更清晰的语法:

第一个括号中的变量交叉应用于星号后的变量(或另一个括号中的变量列表)。

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;

在宏变量中添加更多内容以使其正常工作

proc sql noprint;
select cats(name,'*site')
into :varlistc separated by ' '
from data2c;
quit;
proc freq data=&data1;
table &varlistc;
run;

这将生成屏幕上的所有表。如果你想把它们输出到一个数据集,如果你添加一个/out,将不输出除了最后一个表;你有两个选择。

  • 使用ods output将所有输出输入一个或多个数据集
  • select into中加入/out=<whatever>

最新更新