DATA Step, Macro, Functions and more

Question re for loops

Accepted Solution Solved
Reply
N/A
Posts: 1
Accepted Solution

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
Super User
Posts: 6,500

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

View solution in original post


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

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.

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

Discussion stats
  • 1 reply
  • 159 views
  • 0 likes
  • 2 in conversation