Title seems straight forward. I'd like to round every number in a dataset to 3 decimal places, to make reading easier.
I'd prefer a generic approach, as I don't have variable names beforehand (using output from Proc Means, autoname).
Additionally, a related side question:
The following generic format attempt doesn't work:
data want;
format _num_ 9.3;
set have;
run;
SAS wants the specific variable name, not the generic _num_.
Any suggestions greatly appreciated.
Nicholas Kormanik
If you want to actually round the values that are stored, you can use array logic:
data want;
set have;
array _nums {*} _numeric_;
do i = 1 to dim(_nums);
_nums{i} = round(_nums{i},.001);
end;
drop i;
run;
hi
Change your FORMAT statement like so
data want;
set sashelp.class;
format _numeric_ 9.3;
run;
Please note this does not round values, it just changes how the value ist displayed.
Do you actually want to round the values?
Bruno
If you want to actually round the values that are stored, you can use array logic:
data want;
set have;
array _nums {*} _numeric_;
do i = 1 to dim(_nums);
_nums{i} = round(_nums{i},.001);
end;
drop i;
run;
Nice going Kurt. And thanks for helping RW9, Reeza and Bruno.
Mission accomplished!
(at least for today....)
AS @BrunoMueller has said, format does not change the underlying value, only how it is displayed. To round a value you would use round(), floor(), ceil() functions. You can do this based on an array if you like:
data have; input value1 value2; array tmp _numeric_; do over tmp; tmp=round(tmp,0.001); end; datalines; 1.2354 34.45 23.65788 67.23456 21.34 21.34 ; run;
Things wrong with your code
1. _num_ instead of _numeric_
2. Format before SET
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.