下面的代碼將給出怎樣的格式被應用到創建跨列各組MAKE使用Proc Report,您如何將格式應用於從一個交叉變量創建的列?
proc report data=sashelp.cars nowd;
column make type;
define make/group;
define type/across;
run;
一個類型計數?
下面的代碼將給出怎樣的格式被應用到創建跨列各組MAKE使用Proc Report,您如何將格式應用於從一個交叉變量創建的列?
proc report data=sashelp.cars nowd;
column make type;
define make/group;
define type/across;
run;
一個類型計數?
在下面的代碼中顯示了ACROSS變量的計數。但是,可以通過在ACROSS變量之後的COLUMN語句中使用逗號來明確它。 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塊來完成的列。爲了查看列的外觀,請在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____),當該列不存在時都有可能發生錯誤。創建用戶格式並在該ACROSS變量的DEFINE語句上使用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;