DATA Step, Macro, Functions and more

Saving formatted numbers at text

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 75
Accepted Solution

Saving formatted numbers at text

Gday,

I'm not sure if I really need to save a format as text however, it's the only solution I can think of right now.  I just don't know how to do it.

I want the following table (it will only ever have four lines):

IncomeSuccess
Jan-12     831.59 1.751%
Jan-11     923.87 1.759%
Change11.10%0.47%

^^

The first two records is in my data.  The third record is the percentage difference between the above two records (Success and Income are both formatted numbers) .  I can do that, however I want to maintain the formats.

Obviously the percentage difference will be fine for Success (although the number of decimal places would be quite right, I could probably live with it) but what about Income?  This is why I think I need to convert these values into text.

How would I do that?

Thanks.


Accepted Solutions
Solution
‎02-15-2012 01:55 AM
Super User
Super User
Posts: 6,497

Saving formatted numbers at text

You can use the PUT function.  For example in a data step.

data want ;

  set have ;

  if col1='Change' then incometext = put(income,percent.);

  else incomtext=put(income,8.2);

run;

View solution in original post


All Replies
Contributor
Posts: 60

Saving formatted numbers at text

It will be good if you use the numeric variable for calculation purpose and for reporting you can use the Character with unique formats

Solution
‎02-15-2012 01:55 AM
Super User
Super User
Posts: 6,497

Saving formatted numbers at text

You can use the PUT function.  For example in a data step.

data want ;

  set have ;

  if col1='Change' then incometext = put(income,percent.);

  else incomtext=put(income,8.2);

run;

Frequent Contributor
Posts: 75

Re: Saving formatted numbers at text

Thanks Tom,

I think I had a brain snap yesterday.

Worked perfectly as described.

Super User
Posts: 9,662

Saving formatted numbers at text

If you can sure the value of income could not be between 0 and 1, then you can use embed format.

But I still recommend you to use the method Tom proposed.

data want;
input Income     Success percent8.;
format success percent8.2;
cards;
831.59      1.751%
923.87      1.759%
.1110     0.47%
;
run;
proc format;
value x
 0-1=[percent8.2]
 ;
run;
data want;
 set want;
 format income x.;
run;


Ksharp

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 147 views
  • 0 likes
  • 4 in conversation