<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Counting flags in historical data in New SAS User</title>
    <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624539#M20116</link>
    <description>&lt;P&gt;An alternative..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input customer_id $ reporting_date $ rating_18_20;
datalines;
111111 Apr-19 1
111111 May-19 1
111111 Jun-19 0
111111 Jul-19 0
111111 Aug-19 0
111111 Sep-19 0
111111 Oct-19 1
111111 Nov-19 1
111111 Dec-19 1
111111 Jan-20 0
222222 Apr-19 0
222222 May-19 0
222222 Jun-19 0
222222 Jul-19 0
222222 Aug-19 1
222222 Sep-19 1
222222 Oct-19 1
222222 Nov-19 1
222222 Dec-19 0
222222 Jan-20 0
333333 Apr-19 0
333333 May-19 0
333333 Jun-19 0
333333 Jul-19 0
333333 Aug-19 0
333333 Sep-19 1
333333 Oct-19 1
333333 Nov-19 1
333333 Dec-19 1
333333 Jan-20 1
444444 Apr-19 0
444444 May-19 0
444444 Jun-19 0
444444 Jul-19 0
444444 Aug-19 0
444444 Sep-19 0
444444 Oct-19 0
444444 Nov-19 0
444444 Dec-19 0
444444 Jan-20 0
555555 Apr-19 1
555555 May-19 1
555555 Jun-19 1
555555 Jul-19 1
555555 Aug-19 1
555555 Sep-19 1
555555 Oct-19 1
555555 Nov-19 1
555555 Dec-19 1
555555 Jan-20 1
;

data want (keep=customer_id r period_rating_18_20);
    if _N_=1 then do;                            
        declare hash h(ordered : 'D', multidata : 'Y');
        h.definekey('customer_id');
        h.definedata('customer_id', 'period_rating_18_20', 'r');
        h.definedone();
        declare hiter hi ('h');
    end;
 
    do period_rating_18_20 = 1 by 1 until (last.customer_id | last.rating_18_20);             
        set have end=lr;
        by customer_id rating_18_20 notsorted;
        if first.customer_id then h.add(key: customer_id, data: customer_id, data: 0, data: " ");
        if first.rating_18_20 then r = reporting_date;
    end;

    if rating_18_20=1 then h.add();

    if lr;
    do while (hi.last()=0);
        output;
        rc=hi.next();
        h.remove();
    end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 13 Feb 2020 17:34:58 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2020-02-13T17:34:58Z</dc:date>
    <item>
      <title>Counting flags in historical data</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624475#M20101</link>
      <description>&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="display: inline !important; float: none; background-color: transparent; color: #333333; font-family: 'HelevticaNeue-light','Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21.33px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;I've done something similar in the past, but now can't really remember how I did that.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Hope&lt;SPAN style="display: inline !important; float: none; background-color: transparent; color: #333333; font-family: 'HelevticaNeue-light','Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21.33px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt; someone can help me with this.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="display: inline !important; float: none; background-color: transparent; color: #333333; font-family: 'HelevticaNeue-light','Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21.33px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Here's a sample of historical data and final result i'm aiming for&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="display: inline !important; float: none; background-color: transparent; color: #333333; font-family: 'HelevticaNeue-light','Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 21.33px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Sample&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;customer_id&lt;/TD&gt;&lt;TD&gt;reporting_date&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;rating_18_20 (flag)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Apr-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;May-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Jun-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Jul-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Aug-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Sep-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Oct-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Nov-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Dec-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Jan-20&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Apr-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;May-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Jun-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Jul-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Aug-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Sep-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Oct-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Nov-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Dec-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Jan-20&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Apr-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;May-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Jun-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Jul-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Aug-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Sep-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Oct-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Nov-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Dec-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Jan-20&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Apr-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;May-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Jun-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Jul-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Aug-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Sep-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Oct-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Nov-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Dec-19&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;Jan-20&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Apr-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;May-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Jun-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Jul-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Aug-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Sep-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Oct-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Nov-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Dec-19&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Jan-20&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Needed table:&lt;/P&gt;&lt;P&gt;Data aggregated on customer level where reporting_date_rating is a date when customer got &lt;SPAN style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'HelevticaNeue-light','Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;rating_18_20 =1 for the last time in history and period_rating_18_20 is amount of months the customer has been possessing the flag for the last period in history.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;customer_id&lt;/TD&gt;&lt;TD&gt;reporting_date_rating&lt;/TD&gt;&lt;TD&gt;period_rating_18_20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;TD&gt;Oct-19&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;222222&lt;/TD&gt;&lt;TD&gt;Aug-19&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;333333&lt;/TD&gt;&lt;TD&gt;Sep-19&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;444444&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;555555&lt;/TD&gt;&lt;TD&gt;Apr-19&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's a code that doesn't work for customers who didn't have&amp;nbsp;&lt;SPAN style="background-color: transparent; color: #333333; cursor: text; display: inline; float: none; font-family: &amp;amp;quot; helevticaneue-light&amp;amp;quot;,&amp;amp;quot;helvetica neue&amp;amp;quot;,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 16.8px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;rating_18_20 =1 (for example customer number 444444) and returns&amp;nbsp;&lt;SPAN style="display: inline !important; float: none; background-color: transparent; color: #333333; cursor: text; font-family: 'HelevticaNeue-light','Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;period_rating_18_20&lt;/SPAN&gt; = 10 instead of 0.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: transparent; color: #333333; cursor: text; display: inline; float: none; font-family: &amp;amp;quot; helevticaneue-light&amp;amp;quot;,&amp;amp;quot;helvetica neue&amp;amp;quot;,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 16.8px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Could anyone please look into it and tell me where the logic is incorrect.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: transparent; color: #333333; cursor: text; display: inline; float: none; font-family: &amp;amp;quot; helevticaneue-light&amp;amp;quot;,&amp;amp;quot;helvetica neue&amp;amp;quot;,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; line-height: 16.8px; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"&gt;Thanks.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*18-20*/&lt;BR /&gt;proc sort data=WORK.SAMPLE (keep=customer_id reporting_date rating_18_20)&lt;BR /&gt;out=rating_flags_sort nodup;&lt;BR /&gt;by customer_id rating_18_20 ;&lt;BR /&gt;run;&lt;BR /&gt;data rating;&lt;BR /&gt;set rating_flags_sort;&lt;BR /&gt;format for_lag_dt lag_dt date9.;&lt;BR /&gt;by customer_id rating_18_20;&lt;BR /&gt;retain num_of_period for_lag_dt cnt_months;&lt;BR /&gt;if first.rating_18_20 then do;&lt;BR /&gt;num_of_period = 1;&lt;BR /&gt;for_lag_dt = reporting_date;&lt;BR /&gt;cnt_months= 1;&lt;BR /&gt;end;&lt;BR /&gt;else do;&lt;BR /&gt;lag_dt = for_lag_dt;&lt;BR /&gt;for_lag_dt = reporting_date;&lt;BR /&gt;a=intck('month', lag_dt, reporting_date);&lt;BR /&gt;if a&amp;gt;1 then do; num_of_period+1;&lt;BR /&gt;cnt_months =1;end;&lt;BR /&gt;else cnt_months + 1;&lt;BR /&gt;end;&lt;BR /&gt;/*drop lag_dt for_lag_dt;*/&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/*doesn't work for customers with 0 flags - returns max amount of months in history*/&lt;BR /&gt;data rating_2;&lt;BR /&gt;set rating;&lt;BR /&gt;by customer_id;&lt;BR /&gt;if last.customer_id;&lt;BR /&gt;keep customer_id rating_18_20 cnt_months;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/*date of rating*/&lt;BR /&gt;proc sort data=rating out=rating_sort_2;&lt;BR /&gt;by customer_id descending rating_18_20 descending num_of_period reporting_date;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data rating_3;&lt;BR /&gt;set rating_sort_2;&lt;BR /&gt;by customer_id descending rating_18_20 descending num_of_period reporting_date;&lt;BR /&gt;if first.customer_id and first.num_of_period;&lt;BR /&gt;keep customer_id reporting_date;&lt;BR /&gt;run;&lt;BR /&gt;data rating_total;&lt;BR /&gt;merge rating_2 rating_3;&lt;BR /&gt;by customer_id;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Feb 2020 14:20:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624475#M20101</guid>
      <dc:creator>Riri_V</dc:creator>
      <dc:date>2020-02-13T14:20:04Z</dc:date>
    </item>
    <item>
      <title>Re: Counting flags in historical data</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624481#M20102</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/311994"&gt;@Riri_V&lt;/a&gt;&amp;nbsp; &lt;STRONG&gt;&lt;U&gt;Assuming&lt;/U&gt;&lt;/STRONG&gt; I understand your requirement, the following should work&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;


data have;
input customer_id	reporting_date $	rating_18_20;
cards;
111111	Apr-19	1
111111	May-19	1
111111	Jun-19	0
111111	Jul-19	0
111111	Aug-19	0
111111	Sep-19	0
111111	Oct-19	1
111111	Nov-19	1
111111	Dec-19	1
111111	Jan-20	0
222222	Apr-19	0
222222	May-19	0
222222	Jun-19	0
222222	Jul-19	0
222222	Aug-19	1
222222	Sep-19	1
222222	Oct-19	1
222222	Nov-19	1
222222	Dec-19	0
222222	Jan-20	0
333333	Apr-19	0
333333	May-19	0
333333	Jun-19	0
333333	Jul-19	0
333333	Aug-19	0
333333	Sep-19	1
333333	Oct-19	1
333333	Nov-19	1
333333	Dec-19	1
333333	Jan-20	1
444444	Apr-19	0
444444	May-19	0
444444	Jun-19	0
444444	Jul-19	0
444444	Aug-19	0
444444	Sep-19	0
444444	Oct-19	0
444444	Nov-19	0
444444	Dec-19	0
444444	Jan-20	0
555555	Apr-19	1
555555	May-19	1
555555	Jun-19	1
555555	Jul-19	1
555555	Aug-19	1
555555	Sep-19	1
555555	Oct-19	1
555555	Nov-19	1
555555	Dec-19	1
555555	Jan-20	1
;

data want;
 do until(last.customer_id);
  do _n_=1 by 1 until(last.rating_18_20);
   set have ;
   by customer_id rating_18_20 notsorted;
   if rating_18_20 then do;
    if _n_=1 then reporting_date_rating=reporting_date;
    period_rating_18_20=_n_;
   end;
  end;
 end;
 period_rating_18_20=max(period_rating_18_20,0);
 keep customer_id	reporting_date_rating	period_rating_18_20; 
run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col"&gt;customer_id&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;reporting_date_rating&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;period_rating_18_20&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;111111&lt;/TD&gt;
&lt;TD class="l data"&gt;Oct-19&lt;/TD&gt;
&lt;TD class="r data"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;222222&lt;/TD&gt;
&lt;TD class="l data"&gt;Aug-19&lt;/TD&gt;
&lt;TD class="r data"&gt;4&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;333333&lt;/TD&gt;
&lt;TD class="l data"&gt;Sep-19&lt;/TD&gt;
&lt;TD class="r data"&gt;5&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;444444&lt;/TD&gt;
&lt;TD class="l data"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD class="r data"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="r data"&gt;555555&lt;/TD&gt;
&lt;TD class="l data"&gt;Apr-19&lt;/TD&gt;
&lt;TD class="r data"&gt;10&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Feb 2020 14:41:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624481#M20102</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-02-13T14:41:05Z</dc:date>
    </item>
    <item>
      <title>Re: Counting flags in historical data</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624483#M20103</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/311994"&gt;@Riri_V&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;here is an attempt to achieve this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines dlm="09"x;
	input customer_id	reporting_date :monyy6.	rating_18_20;
	format reporting_date date9.;
	datalines;
111111	Apr-19	1
111111	May-19	1
111111	Jun-19	0
111111	Jul-19	0
111111	Aug-19	0
111111	Sep-19	0
111111	Oct-19	1
111111	Nov-19	1
111111	Dec-19	1
111111	Jan-20	0
222222	Apr-19	0
222222	May-19	0
222222	Jun-19	0
222222	Jul-19	0
222222	Aug-19	1
222222	Sep-19	1
222222	Oct-19	1
222222	Nov-19	1
222222	Dec-19	0
222222	Jan-20	0
333333	Apr-19	0
333333	May-19	0
333333	Jun-19	0
333333	Jul-19	0
333333	Aug-19	0
333333	Sep-19	1
333333	Oct-19	1
333333	Nov-19	1
333333	Dec-19	1
333333	Jan-20	1
444444	Apr-19	0
444444	May-19	0
444444	Jun-19	0
444444	Jul-19	0
444444	Aug-19	0
444444	Sep-19	0
444444	Oct-19	0
444444	Nov-19	0
444444	Dec-19	0
444444	Jan-20	0
555555	Apr-19	1
555555	May-19	1
555555	Jun-19	1
555555	Jul-19	1
555555	Aug-19	1
555555	Sep-19	1
555555	Oct-19	1
555555	Nov-19	1
555555	Dec-19	1
555555	Jan-20	1
;
run;

/* Customers with at least one flag = 1*/

proc sort data=have out=have_sorted_d;
	by customer_id descending reporting_date;
run;

data have2;
	set have_sorted_d;
	by customer_id rating_18_20 notsorted;
	if first.rating_18_20 then count + 1;
run;

proc sql;
	create table have3 as
	select *, count(count) as period_rating_18_20
	from have2
	where rating_18_20 = 1
	group by customer_id, count
	order by customer_id, count, reporting_date asc;
quit;

data have4;
	set have3;
	by customer_id;
	if first.customer_id then output;
	drop count rating_18_20;
run;

/* Customers with no flag = 1*/

proc sql;
	create table have_noflag as
	select distinct customer_id
	from have
	group by customer_id
	having sum(rating_18_20) = 0;
quit;

/* Final table */

data want;
	merge have4 have_noflag;
	by customer_id;
	if period_rating_18_20=. then period_rating_18_20=0;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 13 Feb 2020 14:47:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624483#M20103</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-02-13T14:47:04Z</dc:date>
    </item>
    <item>
      <title>Re: Counting flags in historical data</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624485#M20104</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How about group by processing?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input customer_id : $	reporting_date monyy6.	rating_18_20;
format reporting_date yymmdd10.;
cards4;
111111 Apr-19 1
111111 May-19 1
111111 Jun-19 0
111111 Jul-19 0
111111 Aug-19 0
111111 Sep-19 0
111111 Oct-19 1
111111 Nov-19 1
111111 Dec-19 1
111111 Jan-20 0
222222 Apr-19 0
222222 May-19 0
222222 Jun-19 0
222222 Jul-19 0
222222 Aug-19 1
222222 Sep-19 1
222222 Oct-19 1
222222 Nov-19 1
222222 Dec-19 0
222222 Jan-20 0
333333 Apr-19 0
333333 May-19 0
333333 Jun-19 0
333333 Jul-19 0
333333 Aug-19 0
333333 Sep-19 1
333333 Oct-19 1
333333 Nov-19 1
333333 Dec-19 1
333333 Jan-20 1
444444 Apr-19 0
444444 May-19 0
444444 Jun-19 0
444444 Jul-19 0
444444 Aug-19 0
444444 Sep-19 0
444444 Oct-19 0
444444 Nov-19 0
444444 Dec-19 0
444444 Jan-20 0
555555 Apr-19 1
555555 May-19 1
555555 Jun-19 1
555555 Jul-19 1
555555 Aug-19 1
555555 Sep-19 1
555555 Oct-19 1
555555 Nov-19 1
555555 Dec-19 1
555555 Jan-20 1
;;;;
run;

proc sort data = have;
  by customer_id reporting_date;
run;

data want(rename=(rd=reporting_date));
  set have;
  by customer_id rating_18_20 notsorted;
  if first.customer_id then 
    do;
      rd = .; 
      cnt = 0;
    end;

  if first.rating_18_20 = 1 = rating_18_20 then 
    do;      
      rd=reporting_date;
      cnt = 0;
    end;
  cnt+rating_18_20;

  if last.customer_id then output;
  retain rd;
  drop reporting_date rating_18_20; 
  format rd monyy6.;
run;
proc print;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;All the best&lt;/P&gt;&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Thu, 13 Feb 2020 15:02:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624485#M20104</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2020-02-13T15:02:51Z</dc:date>
    </item>
    <item>
      <title>Re: Counting flags in historical data</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624539#M20116</link>
      <description>&lt;P&gt;An alternative..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input customer_id $ reporting_date $ rating_18_20;
datalines;
111111 Apr-19 1
111111 May-19 1
111111 Jun-19 0
111111 Jul-19 0
111111 Aug-19 0
111111 Sep-19 0
111111 Oct-19 1
111111 Nov-19 1
111111 Dec-19 1
111111 Jan-20 0
222222 Apr-19 0
222222 May-19 0
222222 Jun-19 0
222222 Jul-19 0
222222 Aug-19 1
222222 Sep-19 1
222222 Oct-19 1
222222 Nov-19 1
222222 Dec-19 0
222222 Jan-20 0
333333 Apr-19 0
333333 May-19 0
333333 Jun-19 0
333333 Jul-19 0
333333 Aug-19 0
333333 Sep-19 1
333333 Oct-19 1
333333 Nov-19 1
333333 Dec-19 1
333333 Jan-20 1
444444 Apr-19 0
444444 May-19 0
444444 Jun-19 0
444444 Jul-19 0
444444 Aug-19 0
444444 Sep-19 0
444444 Oct-19 0
444444 Nov-19 0
444444 Dec-19 0
444444 Jan-20 0
555555 Apr-19 1
555555 May-19 1
555555 Jun-19 1
555555 Jul-19 1
555555 Aug-19 1
555555 Sep-19 1
555555 Oct-19 1
555555 Nov-19 1
555555 Dec-19 1
555555 Jan-20 1
;

data want (keep=customer_id r period_rating_18_20);
    if _N_=1 then do;                            
        declare hash h(ordered : 'D', multidata : 'Y');
        h.definekey('customer_id');
        h.definedata('customer_id', 'period_rating_18_20', 'r');
        h.definedone();
        declare hiter hi ('h');
    end;
 
    do period_rating_18_20 = 1 by 1 until (last.customer_id | last.rating_18_20);             
        set have end=lr;
        by customer_id rating_18_20 notsorted;
        if first.customer_id then h.add(key: customer_id, data: customer_id, data: 0, data: " ");
        if first.rating_18_20 then r = reporting_date;
    end;

    if rating_18_20=1 then h.add();

    if lr;
    do while (hi.last()=0);
        output;
        rc=hi.next();
        h.remove();
    end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 13 Feb 2020 17:34:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/624539#M20116</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-02-13T17:34:58Z</dc:date>
    </item>
    <item>
      <title>Re: Counting flags in historical data</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/625203#M20210</link>
      <description>&lt;P&gt;Thanks, works perfectly on the sample! But on the whole table discounted flags from past years.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Feb 2020 08:42:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/625203#M20210</guid>
      <dc:creator>Riri_V</dc:creator>
      <dc:date>2020-02-17T08:42:03Z</dc:date>
    </item>
    <item>
      <title>Re: Counting flags in historical data</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/625204#M20211</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/35763"&gt;@yabwon&lt;/a&gt;&amp;nbsp; Thaaank you so much! exactly what was needed!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Feb 2020 08:44:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/625204#M20211</guid>
      <dc:creator>Riri_V</dc:creator>
      <dc:date>2020-02-17T08:44:36Z</dc:date>
    </item>
    <item>
      <title>Re: Counting flags in historical data</title>
      <link>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/625207#M20212</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/311994"&gt;@Riri_V&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;glad I could help &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;All the best&lt;/P&gt;&lt;P&gt;Bart&lt;/P&gt;</description>
      <pubDate>Mon, 17 Feb 2020 08:51:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/New-SAS-User/Counting-flags-in-historical-data/m-p/625207#M20212</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2020-02-17T08:51:53Z</dc:date>
    </item>
  </channel>
</rss>

