BookmarkSubscribeRSS Feed
89974114
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;
datalines;
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
;
run;

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);

end;
run;

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

do i = 1 to 3;

fract = ceil (fraction,1); 

end;
drop i;

run;

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)

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

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

sas-innovate-2024.png

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.

 

Register now!

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
  • 917 views
  • 4 likes
  • 3 in conversation