Solved
Not applicable
Posts: 1

# Question re for loops

Hi,

I have a fairly large data set (around 1 million observations) that looks something like the following table:

ID         n         P          y

1          5         11.4      0.04

2          8         7.6        0.02

3          13       12.2       0.01

4          4         3.9         0.07

...

I want to create a column D that calculates the following for each row: P * [ (1+y)^0 + (1+y)^1 + (1+y)^2 + ... + (1+y)^n ]

I tried using a for loop but wasn't able to perform the required calculation. Any help would be much appreciated.

Thanks

Accepted Solutions
Solution
‎12-13-2013 11:35 PM
Super User
Posts: 8,070

## Re: Question re for loops

Seems like a simple problem.  If N gets too big you might have problems with numeric overflow.

data have;

input ID n P y @@;

cards;

1 5 11.4 0.04 2 8 7.6 0.02 3 13 12.2 0.01 4 4 3.9 0.07

run;

data want ;

set have ;

d = 0;

do i=0 to n ;

d=d+(1+y)**i;

end;

d = p*d;

drop i ;

run;

Obs    ID     n      P       y        d

1      1     5    11.4    0.04     75.616

2      2     8     7.6    0.02     74.135

3      3    13    12.2    0.01    182.359

4      4     4     3.9    0.07     22.428

All Replies
Solution
‎12-13-2013 11:35 PM
Super User
Posts: 8,070

## Re: Question re for loops

Seems like a simple problem.  If N gets too big you might have problems with numeric overflow.

data have;

input ID n P y @@;

cards;

1 5 11.4 0.04 2 8 7.6 0.02 3 13 12.2 0.01 4 4 3.9 0.07

run;

data want ;

set have ;

d = 0;

do i=0 to n ;

d=d+(1+y)**i;

end;

d = p*d;

drop i ;

run;

Obs    ID     n      P       y        d

1      1     5    11.4    0.04     75.616

2      2     8     7.6    0.02     74.135

3      3    13    12.2    0.01    182.359

4      4     4     3.9    0.07     22.428

🔒 This topic is solved and locked.

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

Discussion stats