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