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!
SUBSTR is intended for characters you have a numeric variable.
Why not use a format instead?
format estimate 12.3;
SUBSTR is intended for characters you have a numeric variable.
Why not use a format instead?
format estimate 12.3;
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;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.