I have one field named 'Amount' which is in character format of 20 bytes i.e. $20.
I want to perform Sort Sum on this amount field but I am getting error as character data can't be added up. Please suggest what needs to be done here?
I have below amounts in my input file which has been set as $20. Also, I have tried changing $20. to PD format but no luck. I want to convert this in numeric format so that it will be printed as it is and sort sum can be performed.
-80.45
-202.07
33
126995.77
Like this?
data have;
input Amount $20.;
datalines;
-80.45
-202.07
33
126995.77
;
data want;
set have;
NumAmount=input(Amount, 20.);
run;
I already tried the below code. But the amounts are not populating as expected.
The decimal digit places are not being printed. Also, I tried 20.2 but it it converting all the values with 2 decimal places.
When I ran code with 20.2 I got below result which is wrong.
Input Output
-79.34 -79.34
0 0.00
854 8.54
-202.07 -202.07
When I ran the code with 20. I got below results.
Input Output
-79.34 -79
0 0
854 854
-202.07 -202.
Why do you want to use 20.2?
You can use 20. or best12. as well based on the highest length.
@PeterClemmensen provided the correct solution. You are getting those results because you added to it something like:
format NumAmount 20.;
Get rid of the FORMAT statement.
So you applied the format in a PUT statement instead of a FORMAT statement. Still, you got what you requested. Change the PUT statement:
put @30 amtn 20.2;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.