DATA Step, Macro, Functions and more

Counter Flags

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 10
Accepted Solution

Counter Flags

Hi All,

 

I need to set up a count of months since an account was last 1+ in arrears.

 

Have

 

Acc    Date     Arrears      

1         Jan        0              

1         Feb        1             

1         Mar        2                   

1         Apr         0   

1         Jun         0                

1         Jul          1  

1         Aug        0 

2         Jan         0 

2         Feb        0 

2         Mar        1

2         Apr         0

2         May        0 

 

How can I set up a flag to do the following

 

Acc    Date     Arrears      Since last 1+

1         Jan        0                    0

1         Feb        1                    0

1         Mar        2                    0

1         Apr         0                    1

1         Jun         0                    2

1         Jul          1                    0

1         Aug        0                    1  

2         Jan         0                    0

2         Feb        0                     0

2         Mar        1                     0

2         Apr         0                     1

2         May        0                     0

 

 

Many Thanks

 

Adnan


Accepted Solutions
Solution
‎06-13-2017 08:22 AM
Super User
Super User
Posts: 7,392

Re: Counter Flags

[ Edited ]

Post test data in the form of a datastep!

 

data have;
  input Acc  Date $ Arrears;
datalines;
1         Jan        0              
1         Feb        1             
1         Mar        2                   
1         Apr         0 
1         Jun         0                
1         Jul          1  
1         Aug        0 
; 
run;

data want;
  set have;
  retain since_last 0;
  since_last=ifn(_n_=1 or arrears>0,0,since_last+1);
run;

View solution in original post


All Replies
Super User
Posts: 6,927

Re: Counter Flags

Use the lag() function to determine when you have a +1 increase, and then apply the solution from https://communities.sas.com/t5/Base-SAS-Programming/Number-of-months-since-value-x/m-p/365753

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Solution
‎06-13-2017 08:22 AM
Super User
Super User
Posts: 7,392

Re: Counter Flags

[ Edited ]

Post test data in the form of a datastep!

 

data have;
  input Acc  Date $ Arrears;
datalines;
1         Jan        0              
1         Feb        1             
1         Mar        2                   
1         Apr         0 
1         Jun         0                
1         Jul          1  
1         Aug        0 
; 
run;

data want;
  set have;
  retain since_last 0;
  since_last=ifn(_n_=1 or arrears>0,0,since_last+1);
run;
☑ This topic is SOLVED.

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

Discussion stats
  • 2 replies
  • 143 views
  • 0 likes
  • 3 in conversation