BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
fabdu92
Obsidian | Level 7

Hi,

 

I have a dataset like this:

 

DataA DataB DataC

ajbg   34   31/01/2000

hytv   20   31/08/1995

ytffg   54   28/02/2005

...

 

I would like to duplicate rows for each row. How many times? Exactly the number of time of DataB: 34 times for the first row, 20 for the second one, 54 for the third, in the way we have something like that at the end.

 

DataA DataB DataC

ajbg   34   31/01/2000

ajbg   33   29/02/2000

ajbg   32   31/03/2000

ajbg   31   30/04/2000

ajbg   30   31/05/2000

...

hytv   20   31/08/1995

hytv   19   30/09/1995

hytv   18   31/10/1995

hytv   17   30/11/1995

hytv   16   31/12/1995

hytv   15   31/01/1996

...

ytffg   54   28/02/2005

ytffg   53   31/03/2005

ytffg   52   30/04/2005

ytffg   51   31/05/2005

ytffg   50   30/06/2005

...

 

Is there a way to do this? Thanks for help, I am only a beginner on SAS

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

Assuming your dates for datac are actually SAS date values and not characters perhaps:


data want;
   set have ;
   do datab=datab to 1 by -1;
      output;
      datac = intnx('month',datac,-1,'e');
   end;
run;

View solution in original post

3 REPLIES 3
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Yes, do loops:

data want;
  set have;
  do i=0 to datab;
    datac=datac+i;
    output;
  end;
run;

This creates a loop going from 0 to your number.  The record is then output once for each of these loops, so the first time it will be datac+0 -> output, then datac+1 output etc.

ballardw
Super User

Assuming your dates for datac are actually SAS date values and not characters perhaps:


data want;
   set have ;
   do datab=datab to 1 by -1;
      output;
      datac = intnx('month',datac,-1,'e');
   end;
run;
FreelanceReinh
Jade | Level 19

To obtain ascending months, simply replace -1 with 1 in the third argument of the INTNX function used in ballardw's approach.

sas-innovate-2024.png

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.

 

Register now!

SAS Enterprise Guide vs. SAS Studio

What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 1535 views
  • 1 like
  • 4 in conversation