BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Varrelle
Quartz | Level 8

I want to display a simple pre-fix for decimal numbers contained within a variable based on the value of those decimal numbers.

 

I have a series of numbers on [0,1). if the numbers are less than 0.001, then I want the number to display as '<.001'.  Otherwise, I want to display the original value with an equal sign in front of it ('=[original number]');

 

I provide a sample dataset as well as the code that I used to try to accomplish this task. 

 

The PRINT procedure output shows that I am partly there, but not quite.  Basically, to get what I am after, the output would need to   display '<0.001' instead of '<0.000' for the first 2 observations. The last 3 observations output the way I want them to.

 

Hope some one can help me.

 

Thanks.

 

proc format;
picture numbers
low-<.001 = '000009.999'(prefix='<' mult=1000)
.001-high = '000009.999'(prefix='=' mult=1000);
run;

data have;
   input numbers;
   datalines;
0.0000
0.0001
0.0010
0.0200
0.0500
;

proc print data=have;
format numbers numbers.;
run;

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

PICTURE formats support the NOEDIT option:

 

http://documentation.sas.com/?docsetId=proc&docsetTarget=p0n990vq8gxca6n1vnsracr6jp2c.htm&docsetVers...

 

So you could code your format in this (untested) fashion:

 

proc format;
picture numbers
low-<.001 = '<.001' (noedit)
.001-high = '000009.999'(prefix='=' mult=1000);
run;

 

You may need to play with the spacing to get all values to line up properly.

View solution in original post

2 REPLIES 2
Astounding
PROC Star

PICTURE formats support the NOEDIT option:

 

http://documentation.sas.com/?docsetId=proc&docsetTarget=p0n990vq8gxca6n1vnsracr6jp2c.htm&docsetVers...

 

So you could code your format in this (untested) fashion:

 

proc format;
picture numbers
low-<.001 = '<.001' (noedit)
.001-high = '000009.999'(prefix='=' mult=1000);
run;

 

You may need to play with the spacing to get all values to line up properly.

Varrelle
Quartz | Level 8

Hi.

 

Thanks for your help -- your solution worked perfectly for me.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1988 views
  • 0 likes
  • 2 in conversation