Есть ли формат для скрытия отрицательного знака от чисел в SAS?

Мне нужно отображать отрицательные числа как положительные (т.е. просто скрыть отрицательный знак)

Для этого я сейчас использую этот формат

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, и ни одно из них не является целым числом, я подумал, что-то вроде этого, но это совершенно не элегантно и является скорее взломом, чем решением.

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).

2 ответа

Почему бы просто не создать пользовательский формат для вызова ABS() функционировать?

proc format ;
 value abs low-high = [abs()] ;
run;

Почему вы не используете абсолютную функцию:

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

Кроме того, поделитесь входными выходными наборами данных, если у вас есть другие требования.

Другие вопросы по тегам