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
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
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
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.