DATA Step, Macro, Functions and more

question about coding array for money and choosing highest payment

Accepted Solution Solved
Reply
Contributor
Posts: 44
Accepted Solution

question about coding array for money and choosing highest payment

Hello,

 

I'm using SAS 9.4 full version. I have the following sample data where the payments are formatted into a money variable. I want to code an array to keep the highest payment per line and maintain money formatting. Is an array the best way to do this?  How do I maintain the money formatting?

 

                      Payment1   Payment 2  Payment 3

Person 1       $500            .                  $750

Person 2       $100            .                  .

Person 3       .                   $450          $400

 

I want:

 

                     Highest Payment

Person 1      $750

Person 2      $100

Person 3      $450

 

Thank you in advance for the help!


Accepted Solutions
Solution
‎12-06-2017 08:05 PM
Super User
Posts: 9,547

Re: question about coding array for money and choosing highest payment

Use the max() function and the dollar format:

data have;
input (paym1-paym3)(:10.);
format paym1-paym3 dollar10.2;
cards;
500 . 750
;
run;

data want;
set have;
max_paym = max(of paym1-paym3);
format max_paym dollar10.2;
run;

proc print data=want noobs;
run;

Result:

   paym1         paym2         paym3      max_paym

 $500.00           0         $750.00       $750.00
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code

View solution in original post


All Replies
Solution
‎12-06-2017 08:05 PM
Super User
Posts: 9,547

Re: question about coding array for money and choosing highest payment

Use the max() function and the dollar format:

data have;
input (paym1-paym3)(:10.);
format paym1-paym3 dollar10.2;
cards;
500 . 750
;
run;

data want;
set have;
max_paym = max(of paym1-paym3);
format max_paym dollar10.2;
run;

proc print data=want noobs;
run;

Result:

   paym1         paym2         paym3      max_paym

 $500.00           0         $750.00       $750.00
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
How to convert datasets to data steps
How to post code
☑ This topic is solved.

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

Discussion stats
  • 1 reply
  • 150 views
  • 3 likes
  • 2 in conversation