Help using Base SAS procedures

Formula calculation

Reply
Contributor
Posts: 23

Formula calculation

Hi,

 

Can anyone help the calculation of Y below using SAS code?

 

Y=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-N

 

Thanks a lot!

Super User
Posts: 6,774

Re: Formula calculation

Within a DATA step, and assuming you have variables A, B, and N:

 

y=0;

do k=1 to n;

   y + a*b**(-k);

end;

 

If B is actually an expression rather than a variable, put it in parentheses:

 

y + a*(b)**(-k);

Esteemed Advisor
Posts: 5,529

Re: Formula calculation

[ Edited ]
Posted in reply to Astounding

Or this, which should be faster:

 

    u = 0;
    v = 1/b;
    do k = 1 to n;
        u = (1 + u) * v;
        end;
    y = a*u;
PG
Contributor
Posts: 23

Re: Formula calculation

Thanks for you both for providing the answer, much appreciated! PG Stats, since the power is negative, should the sas code be revised?

 

as  u = 0;
    v = 1/b;
    do k = -1 to -n; u = (1 + u) * v; end;
    y = a*u;

 

Thanks and regards.

Esteemed Advisor
Posts: 5,529

Re: Formula calculation

No. k is only a counter, not the exponent. The exponent comes from the number of multiplications by v (= 1/b, = b**-1), i.e. the negative exponent results from multiplying by a negative power of b.

PG
Contributor
Posts: 23

Re: Formula calculation

Thanks again, PG Stats!!

Contributor
Posts: 23

Re: Formula calculation

Posted in reply to Astounding

Thanks! How about if N has one decimal place, e.g. 14.1?

Super User
Posts: 6,774

Re: Formula calculation

What is the first term in the equation if N has one decimal place?

Contributor
Posts: 23

Re: Formula calculation

Posted in reply to Astounding

In the equation, everything is the same, only if N is not an integer, the example is below and I need to calculate for each record (Y1........YN)

 

Y1=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-10.2

Y2=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-20.3

…….

YN=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-N.5

Esteemed Advisor
Posts: 5,529

Re: Formula calculation

Not clear. What is the term before the last?

PG
Contributor
Posts: 23

Re: Formula calculation

Thanks very much, PG!

the term before the last is: A*(B)-N+1

For example,

Y1=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-9 +A*(B)-10.2

 

When I run the above sas code, the decimal 0.2 from the last term is missing.

Contributor
Posts: 23

Re: Formula calculation

sorry, it is not -N+1, it should be integer -N+1, for example if N is 10.2, then the term before the last one should be A*(B)-9 , not 9.2.

Ask a Question
Discussion stats
  • 11 replies
  • 363 views
  • 2 likes
  • 3 in conversation