В приведенном ниже коде отображается счет переменной ACROSS. Однако это можно сделать явным образом, используя запятую в операторе COLUMN после переменной ACROSS. Затем столбец N можно отформатировать в операторе DEFINE.
proc report data=sashelp.cars nowd;
column make type,n;
define make / group;
define type / across;
define n / '' format=comma10.1;
run;
Когда будет несколько столбцов, уникальное форматирование столбцов может быть выполнено в блоке COMPUTE. Чтобы посмотреть, как будут выглядеть столбцы, используйте оператор OUT = в строке PROC REPORT, чтобы сгенерировать набор данных. Включение опции MISSING = может заменить отсутствующие точки нулями. Книга Арт Карпентера - превосходное руководство к отчету Proc ... и откуда я взял этот совет .
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____), существует вероятность ошибки, когда этот столбец не существует. Создание пользовательского формата и использование PRELOADFMT в операторе DEFINE для этой переменной ACROSS приведут к появлению всех значений формата и гарантированию существования ____c4____. См. этот вопрос для получения дополнительной информации.
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;