DATA Step, Macro, Functions and more

Retaining values

Reply
Contributor
Posts: 25

Retaining values

Hi All,

 

I have the following dataset

 

data have;
	input reporting_date account_id $ repayment_type $; 
	informat reporting_date  date9.;
	format reporting_date date9.;
	
	cards ;
	31JAN2018 123 REP
	31JAN2018 456 INT
	31JAN2018 789 PAP
	28FEB2018 123 REP
	28FEB2018 456 .   
	28FEB2018 789 PAP 
	31MAR2018 123 .   
	31MAR2018 456 .   
	31MAR2018 789 .   
	;
run;

What I need to get to is

 

 

Reporting_DateAccount_IDRepayment_Type
31-Jan-18123REP
31-Jan-18456INT
31-Jan-18789PAP
28-Feb-18123REP
28-Feb-18456INT
28-Feb-18789PAP
31-Mar-18123REP
31-Mar-18456INT
31-Mar-18789PAP

 

I need to retain the repayment type only if the repayment type is missing the following month.

 

Regards

 

Adnan

Super User
Super User
Posts: 9,416

Re: Retaining values

Posted in reply to Adnan_Razaq

Thats very simple, did you read the examples in the SAS docs?

http://documentation.sas.com/?docsetId=lestmtsref&docsetTarget=p0t2ac0tfzcgbjn112mu96hkgg9o.htm&docs...

 

Maybe something like:

data want;
  set have;
  retain lst;
  if lst ne "" then lst=repayment_type;
  else repayment_type=lst;
run;
Super User
Posts: 10,689

Re: Retaining values

Posted in reply to Adnan_Razaq
data have;
	input reporting_date account_id $ repayment_type $; 
	informat reporting_date  date9.;
	format reporting_date date9.;
	
	cards ;
	31JAN2018 123 REP
	31JAN2018 456 INT
	31JAN2018 789 PAP
	28FEB2018 123 REP
	28FEB2018 456 .   
	28FEB2018 789 PAP 
	31MAR2018 123 .   
	31MAR2018 456 .   
	31MAR2018 789 .   
	;
run;

data want;
 set  have ;
 by reporting_date;
 if first.reporting_date then n=0;
 n+1;
 if n=1 then repayment_type='REP';
 if n=2 then repayment_type='INT';
 if n=3 then repayment_type='PAP';
drop n;
run;
Ask a Question
Discussion stats
  • 2 replies
  • 56 views
  • 0 likes
  • 3 in conversation