SAS的自定义格式
问题描述:
您好我有兴趣为我在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;
但我不知道怎么写的语法追加$
标志和(
)
迹象。
谢谢。
答
百分比格式非常简单。因为你必须观察你的宽度,所以美元是一个小技巧。
基本上你需要使用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;
这太好了。 'low -
'0'是数字选择器。'0'表示可选的print'而非零值(我使用9)意味着'强制性打印'(如'wd' vs'Zw.d'格式)。您也可以使用'dig3sep'选项来指定逗号,但我发现它很容易阅读(因为你不能使用快捷方式) – Joe
是否有一种方法可以使用特定的样式?我发现任何小于.01和大于0的数字,以及大于-.01的任何数字,小于零,成为一个空格,而不是一个0(导致“ - ”)。我找到了一种方法来解决它,但它是沉重的和低效的 –