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!
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
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
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.