使用proc sql选择创建的sas +格式化宏变量结果:

时间:2018-03-29 15:43:40

标签: sas

我使用代码编写表,将每列的总计数捕获为宏变量,然后在labels语句中使用它来完成表列标题。

计数群组& cnum._tot创建为:

'\root\folder\subfolder\another_folder

使用:

 proc sql noprint;
     select count(*) into : cohort&cnum._tot from &analytic_file. (&&cohort&cnum);
 quit;

我环顾四周,无法找到解决方案......所以我在这里询问是否有办法格式化&amp;&amp;&amp; i._tot。< / strong>这样它返回8,675,309而不是8675309?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用count(*)功能格式化select中的PUT。在此示例中,行计数乘以得到足以需要逗号的数字。 TRIMMED 选项会在将值粘贴到宏变量之前从值中删除前导和尾随空格。

proc sql noprint;
  select put( 123456789 * count(*),comma18.-L) into :count trimmed from sashelp.class;

  %put !&count.!;

另一种方法是使用sysfunc格式化宏值。两种方式都可行。

%put %sysfunc(sum(&count.), comma12.);   %* format feature of sysfunc evaluation;
%put %sysfunc(putn(&count , comma12.));  %* versus putn function;

答案 1 :(得分:0)

您可以使用proc sql

format=comma12.中指定格式

您的代码将是这样的:

 proc sql noprint;
     select count(*) format=comma12. into : cohort&cnum._tot from &analytic_file. (&&cohort&cnum);
 quit;