2016-06-10 176 views
3

您好我有興趣爲我在SAS中生成的數據製作一些稍微複雜的自定義格式。我需要它是數字類型。SAS的自定義格式

FORMAT 1

0="-" 
>0="<number>%" 
<0="<number>%" 

0 >>>>>>> - 
.74 >>>>> 74% 
-.65>>>>> -65% 

FORMAT 2

0="-" 
>0="$<number(with commas)>" 
<0="$(<number(with commas)>" 

0>>>>>>- 
1467>>>>$1,467 
-39087>>$(39,087) 

我做了使用簡單的代碼自定義格式這樣

proc format; 
picture test 
    0='-'; 
run; 

但我不知道怎麼寫的語法追加$標誌和()跡象。

謝謝。

回答

5

百分比格式非常簡單。因爲你必須觀察你的寬度,所以美元是一個小技巧。

基本上你需要使用prefix在前面獲得任何東西(美元,paren,減號),並在末尾放置任何你想要的東西。 '0'表示有時打印數字,'9'表示始終打印數字。

您使用mult使.13 - > 13%。

而且,對於美元,您可以使用dollar格式。您可能也可以在負面使用NEGPAREN格式,但不能將其與美元符號結合使用。

proc format; 
picture pctfmt 
    low - <0= '000%' (mult=100 prefix='-') 
    0  = '-' 
    0<-high = '000%' (mult=100); 
picture dollfmt 
    low - <0 = '000,000,000.00)' (prefix='$(') 
    0   = '-' 
    0 <- high = [dollar16.2] 
    ; 

run; 

data _null_; 
input x; 
put x= pctfmt.; 
datalines; 
-.15 
-.05 
0 
.05 
.15 
;;;; 
run; 


data _null_; 
input x; 
put x= dollfmt12.2; 
datalines; 
-5.93 
-13432554 
0 
12345324 
5.98 
;;;; 
run; 
+0

這太好了。 'low - <0 ='000,000,000.00'''(prefix ='$(')'line是如何工作的?這些零代表什麼?謝謝! –

+1

'0'是數字選擇器。'0'表示可選的print'而非零值(我使用9)意味着'強制性打印'(如'wd' vs'Zw.d'格式)。您也可以使用'dig3sep'選項來指定逗號,但我發現它很容易閱讀(因爲你不能使用快捷方式) – Joe

+0

是否有一種方法可以使用特定的樣式?我發現任何小於.01和大於0的數字,以及大於-.01的任何數字,小於零,成爲一個空格,而不是一個0(導致「 - 」)。我找到了一種方法來解決它,但它是沉重的和低效的 –