BookmarkSubscribeRSS Feed
Quartz | Level 8

I am calculating a fraction based on the payments made in four years and I wish to put a cap on my fraction such that it can only be between -1 and 1. Subsequently I'd like to make the following fractions 0 if the cap is maxxed out - an example would be:

data want;
input payment1 payment2 payment3 payment4 fraction1 fraction2 fraction3;
100 25 25 25 0.25 0.25 0.25
150 50 50 50 0.33 0.33 0.33
50 10 10 10 0.2 0.2 0.2
10 50 60 70 1 0 0

I've been looking at the ceiling function with the following code

data want2;
set want;

array fraction(3) fraction1 - fraction3;
array payment(4) payment1 - payment4;

do i = 2 to 4;

fraction(i-1) = payment(i)/payment(1);


data want3;
set want2;
array fraction(3) fraction1 - fraction3;
array fract(3) fract1-fract3;

do i = 1 to 3;

fract = ceil (fraction,1); 

drop i;


but I am getting this error

ERROR 72-185: The CEIL function call has too many arguments.

So in all i'm looking for a way to calculate the fraction of the payments and then make a ceiling at one, then once the ceiling is hit, the subsequent fractions must be zero (which could be done I suppose by just doing an IF-THEN)

Lapis Lazuli | Level 10
The ceil function rounds up that is it.
I would suggest to just use an if-statement.

Switching from CEIL to MIN seems like it would do what you are asking.

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 2 replies
  • 3 in conversation