SAS的自定义格式

Mar*_*ano 3 format sas

嗨,我有兴趣为我在SAS生产的数据制作一些稍微复杂的自定义格式.我需要它是数字类型.

格式1

0="-"
>0="<number>%"
<0="<number>%"
Run Code Online (Sandbox Code Playgroud)

0 >>>>>>> -
.74 >>>>> 74%
-.65>>>>> -65%
Run Code Online (Sandbox Code Playgroud)

格式2

0="-"
>0="$<number(with commas)>"
<0="$(<number(with commas)>"
Run Code Online (Sandbox Code Playgroud)

0>>>>>>-
1467>>>>$1,467
-39087>>$(39,087)
Run Code Online (Sandbox Code Playgroud)

我使用这样的代码制作了简单的自定义格式

proc format;
picture test
    0='-';
run;
Run Code Online (Sandbox Code Playgroud)

但我不知道如何编写语法来附加$符号和( )符号.

谢谢.

Joe*_*Joe 5

格式百分比相当简单.因为你必须注意你的宽度,所以美元是一个狡猾的人.

基本上你需要使用prefix前面的任何东西(美元,巴伦,减号),并在结尾处放置你想要的任何东西.'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;
Run Code Online (Sandbox Code Playgroud)