BookmarkSubscribeRSS Feed
Prash
Calcite | Level 5

I want to repeat the entore row in a SAS data set based on the following condition :

 

 

  • If the 'duration' of the fund is lesser then equal to 4 and type of 'base_fund' is Platinum or blank value ( which implies platinum), I need to generate additional 4 rows same as platinum row values, but changing the "base_fund' to these 4 funds 'Add_Silver', 'Silver'. 'Bronze','Add_gold'. These needs to be repeated twice based on type 'RO' and 'OT'.

 

I have attached the screen shot on how the raw data looks like and what I need as output for Reg_number : 8765432:

 

Data I have:

 

Want.png

 

Data I want Want.png

 

I tried using repeat function and SQL, however I was not fully successful, Appreciate your quick help on this.

3 REPLIES 3
Reeza
Super User

Use a Data step with an explicit OUTPUT statement. Make sure to include an else output so that other records are also displayed. 

 

If <condition> then do;
    Do base_fund= 'add_silver' , 'add_bronze', ... 'Add_awesome';
         Output;
    End;
End;
Else output;
Shmuel
Garnet | Level 18

If by "repeat" you mean to duplicate a row with changes then the code should be:

 

Data want;

 set have;

        output;  /* save original row */

       if   <condition> then do;

           <do your changes>

          output;     /* with the changed data */

      end;

run;

Jim_G
Pyrite | Level 9

Data want;   set have;

Output;

If duration le 4 then do;

   Basefund=’add_silver’;   output’

   Basefund=’silver’;   output’

   Basefund=’add_gold’;   output’

   Basefund=’bronze’;   output’

End;

 

 

 

JIm

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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