0

我需要将负数显示为正数(只是隐藏负号)

为此,我目前正在使用这种格式

proc format;
    * 9 forces leading zeros, 0 doesn't;
    * numbers are inversed so high = low;
    picture posval 
        low - high='000009.00'
        ;
    run;

但问题是,在 gtl 图中,我将在轴上有 2 个十进制值。我无法将轴刻度值的格式更改回无小数。

由于我的数字范围从 -6 到 0,而且它们都不是完全整数,所以我想出了这样的东西,但它完全不优雅,更像是一种 hack 而不是解决方案。

proc format;
    * 9 forces leading zeros, 0 doesn't;
    * numbers are inversed so high = low;
    picture posval 
        low -< -7 = '000009.00'
        -7 -< -7 = '0009'
        -7 -< -6 = '0009.00'
        -6 -< -6 = '0009'
        -6 -< -5 = '0009.00'
        -5 -< -5 = '0009'
        -5 -< -4 = '0009.00'
        -4 -< -4 = '0009'
        -4 -< -3 = '0009.00'
        -3 -< -3 = '0009'
        -3 -< -2 = '0009.00'
        -2 -< -2 = '0009'
        -2 -< -1 = '0009.00'
        -1 -< -1 = '0009'
        -1 -< -0 = '0009.00'
        0 -< 0 = '000009'
        0-high = '000009'
        ;
    run;

有没有更好的办法?

编辑:
更多信息:我故意将我的值反转为负数,以将它们绘制为 barchartparm (sas GTL) 上的倒置条。

4

2 回答 2

3

为什么不创建一个用户定义的格式来调用ABS()函数呢?

proc format ;
 value abs low-high = [abs()] ;
run;
于 2017-04-13T14:07:41.450 回答
0

为什么不使用abs(绝对)函数:

data abc;
input a;
cards;
-1
-2
-2.5
-3
2
3
3.05
4
;
run;


data abc1;
set abc;
a1 = abs(a);
run;

输出:

a      |  a1
-1     |  1
-2     |  2
-2.5   |  2.5
-3     |  3
2      |  2
3      |  3
3.05   |  3.05
4      |  4

此外,如果您有任何不同的要求,请共享输入输出数据集。

于 2017-04-13T10:24:55.697 回答