以下代码将为每个MAKE组提供TYPE计数
proc report data=sashelp.cars nowd;
column make type;
define make / group;
define type / across;
run;
如何将格式应用于创建的跨列?
答案 0 :(得分:1)
在下面的代码中,显示了ACROSS变量的计数。但是,可以通过在ACROSS变量之后的COLUMN语句中使用逗号来明确它。然后可以在DEFINE语句中格式化N列。
proc report data=sashelp.cars nowd;
column make type,n;
define make / group;
define type / across;
define n / '' format=comma10.1;
run;
当跨列有多个时,可以在COMPUTE块中完成唯一格式化列。要查看列的外观,请在PROC REPORT行上使用OUT =语句生成数据集。包括MISSING =选项可以用零替换缺失的点。 Art Carpenter's book is an excellent guide to Proc Report...and where I got this tip
Options missing=0;
proc report data=sashelp.cars nowd out=work.report;
column make type,n;
define make / group;
define type / across;
define n / '';
compute n;
call define('_c4_','format','dollar10.');
endcomp;
run;
无论何时使用绝对列(例如____c4____)的引用,当该列不存在时都可能发生错误。创建用户格式并在DEFINE语句中为该ACROSS变量使用PRELOADFMT将强制显示所有格式值并保证____c4____存在。有关详细信息,请参阅this question。
options missing=.;
Proc format;
value $type
'Hybrid'='Hybrid' 'SUV'='SUV' 'Sedan'='Sedan'
'Sports'='Sports' 'Truck'='Truck' 'Wagon'='Wagon';
Run;
Proc Report data=sashelp.cars(where=(make='Buick')) nowd;
column make type,n;
define make / group;
define type / across format=$type. preloadfmt;
define n / '';
compute n;
call define('_c4_','format','dollar10.');
endcomp;
run;
另一个编辑,一个同事告诉我,通过“消隐”定义语句中的所有标签,可以删除跨变量下方的空白区域。在此示例中,由于组变量(MAKE)现在没有标签,因此它需要在列语句中使用它的标签。
options missing=.;
Proc format;
value $type
'Hybrid'='Hybrid' 'SUV'='SUV' 'Sedan'='Sedan'
'Sports'='Sports' 'Truck'='Truck' 'Wagon'='Wagon';
Run;
proc report data=sashelp.cars(where=(make='Buick')) nowd;
column ('Make' make) type,n;
define make / '' group;
define type / '' across format=$type. preloadfmt;
define n / '';
compute n;
call define('_c4_','format','dollar10.');
endcomp;
run;