【问题标题】:Custom format for SASSAS 的自定义格式
【发布时间】:2016-06-10 19:07:18
【问题描述】:

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

格式 1

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

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

格式 2

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

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

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

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

但我不确定如何编写附加 $ 符号和 ( ) 符号的语法。

谢谢。

【问题讨论】:

    标签: sas format


    【解决方案1】:

    百分比格式相当简单。美元是一个小技巧,因为你必须注意你的宽度。

    基本上,您需要使用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 表示 optional print 而非零(我使用 9)表示 mandatory print(就像 w.dZw.d 格式)。您也可以使用dig3sep 选项来指定逗号,但我发现这种方式使用前缀很容易阅读(因为您不能使用快捷方式格式)。
    • 有没有办法以特定样式进行舍入?我发现任何小于 0.01 且大于 0 的数字,以及任何大于 -.01 且小于零的数字都会变成空格,而不是 0(导致“-”)。我找到了一种破解它的方法,但它既繁琐又低效。
    • 图片格式有四舍五入选项,但它只是圆形或(非圆形)。您可以将0 行更改为-.01 &lt;-&gt; .01 或类似的,或者将round 选项添加到图片中,以告诉它对值进行四舍五入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多