- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
suppose I have the following table PARMS:
parameter | esimate |
a | 14.72344 |
b | -0.00015 |
c | 0.74911 |
d | -0.00986 |
using the round function I rounded each value to 3 decimal places and got the following table PARMS2:
data parms2;
set parms;
estimate= round(estimate,.001);
run;
parameter | estimate |
a | 14.72300 |
b | 0 |
c | 0.74900 |
d | -0.01000 |
Now I want to get rid of the extra zeroes - I want to leave only the integer part and the first 3 decimals. I thought just getting rid of the 2 right-most numbers using the following code:
data parms3;
set parms2;
estimate=substr(estimate,1,length(estimate)-2);
run;
But the result PARMS3 is a mess:
parameter | estimate |
a | 14.70000 |
b | . |
c | 0.70000 |
d | 0 |
Could you please help me?
Thank you!
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
SUBSTR is intended for characters you have a numeric variable.
Why not use a format instead?
format estimate 12.3;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
SUBSTR is intended for characters you have a numeric variable.
Why not use a format instead?
format estimate 12.3;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Note that using a format like 12.3 can remove the need for a separate rounding step and may prevent some odd behaviors involving multiple rounding.
Please see:
data _null_;
x= 123.78445;
r1=round(x,0.0001);
r2 = round(r1,0.001);
r3 = round(r2,0.01);
put x= 12.4 r1= x=12.3 r2= x=12.2 r3=;
run;