DATA Step, Macro, Functions and more

Adding another row based on conditions

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 7
Accepted Solution

Adding another row based on conditions

I want to add another row based on the value.

In the data below, for the first observation, for example, for firm 1, starting from 15-JAN-2012, for every 12 month, for 3 times, I need to give $1000. For observation 4, for firm 2, starting from 05-FEB-2015, every 6 month, for two times, I need to give firm $1000. (I just put two firms for brevity)

Capture1.PNG

 


data schedule;
input firmid startdate mmddyy10. unit times amount;
datalines;
1 01/15/2012 12 3 1000
1 03/15/2013 12 1 2000
1 01/30/2011 3 4 500
2 02/05/2015 6 2 1000
;
run;

proc print data=schedule;
format startdate date11.;
run;

In the end, I need a table that looks like below 

Capture2.PNG

Could you please help me creating this table?

Thanks!

 


Accepted Solutions
Solution
‎02-23-2017 09:53 PM
Super Contributor
Posts: 252

Re: Adding another row based on conditions

Here you go:

data schedule;
 input firmid startdate mmddyy10. unit times amount;
 attrib startdate length=4 format=date9.;
 datalines;
1 01/15/2012 12 3 1000
1 03/15/2013 12 1 2000
1 01/30/2011 3 4 500
2 02/05/2015 6 2 1000
;
run;

data want;
set schedule;
output;
do i = 1 to times - 1;
   startdate = intnx('month', startdate, unit, 's');
   output;
   end;
keep firmid startdate amount;
run;

View solution in original post


All Replies
Solution
‎02-23-2017 09:53 PM
Super Contributor
Posts: 252

Re: Adding another row based on conditions

Here you go:

data schedule;
 input firmid startdate mmddyy10. unit times amount;
 attrib startdate length=4 format=date9.;
 datalines;
1 01/15/2012 12 3 1000
1 03/15/2013 12 1 2000
1 01/30/2011 3 4 500
2 02/05/2015 6 2 1000
;
run;

data want;
set schedule;
output;
do i = 1 to times - 1;
   startdate = intnx('month', startdate, unit, 's');
   output;
   end;
keep firmid startdate amount;
run;
Occasional Contributor
Posts: 7

Re: Adding another row based on conditions

It works great! Thank you so much.
☑ This topic is solved.

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

Discussion stats
  • 2 replies
  • 539 views
  • 4 likes
  • 2 in conversation