2012-03-08 46 views

回答

1

在下面的代碼中顯示了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; 
相關問題