<?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: Comparing a row in a dataset with the followings one in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494583#M130351</link>
    <description>&lt;P&gt;If, for any post_date, there are more that 3 transactions between post_date-29 and post_date (inclusive) then fee=1.&amp;nbsp; BUT, while your data are grouped by cust_id, they are not sorted by date within cust_id.&amp;nbsp; So, to avoid sorting, you can use a double dow.&amp;nbsp; I.e. have 2 do loops reading each cust_id.&amp;nbsp; The first loop increments a subset of a data array (every date from post_date through post_date+29).&amp;nbsp; The second loop checks the result for any given post_date, looking for values over 3:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input Cust_ID TransactionID POST_DATE :mmddyy10.;
  format post_date date9.;
  *if cust_id=987;
datalines;
123 321 2/28/2018   
123 322 2/10/2018   
123 323 2/2/2018   
123 324 2/1/2018   
123 325 11/27/2017   
456 326 2/1/2018   
987 327 3/5/2018   
987 328 2/5/2018   
987 329 1/5/2018   
987 330 12/5/2017   
987 331 11/6/2017   
654 332 11/13/2017   
654 333 2/28/2018   
654 334 2/28/2018   
654 335 2/26/2018   
654 336 2/26/2018   
654 337 2/23/2018   
654 338 2/21/2018   
654 339 2/21/2018   
654 340 2/20/2018   
654 341 2/20/2018   
run;

%let lower_bound=%sysfunc(inputn(01jan2017,date9.));
%let upper_bound=%sysfunc(inputn(31jan2019,date9.));

data want (drop=_:);
  array _count{&amp;amp;lower_bound:&amp;amp;upper_bound} ;
  do until (last.cust_id);
    set have;
    by cust_id notsorted;
    do _d=post_date to post_date+29;
      _count{_d}=sum(_count{_d},1);
    end;
  end;
  do until (last.cust_id);
    set have;
    by cust_id notsorted;
    fee=(_count{post_date}&amp;gt;3);
    output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Notice the _count array is index by date.&amp;nbsp; And the lower bound of the index is set to the numerical equivalent of sas data value 01jan2017, and the upper bound to the equivalent of 31jan2019.&amp;nbsp; Just use a lower bound date as the minimum expected date, and the upper bound at least 29 days after the highest expected date.&lt;/P&gt;</description>
    <pubDate>Tue, 11 Sep 2018 17:58:19 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2018-09-11T17:58:19Z</dc:date>
    <item>
      <title>Comparing a row in a dataset with the followings one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494557#M130342</link>
      <description>&lt;P&gt;Hi All-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am, going to start with a little background.&amp;nbsp; I do have a dataset like the following :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Cust_ID&lt;/TD&gt;&lt;TD&gt;TransactionID&lt;/TD&gt;&lt;TD&gt;POST_DATE&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;FEE&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;321&lt;/TD&gt;&lt;TD&gt;2/28/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;322&lt;/TD&gt;&lt;TD&gt;2/10/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;323&lt;/TD&gt;&lt;TD&gt;2/2/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;324&lt;/TD&gt;&lt;TD&gt;2/1/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;325&lt;/TD&gt;&lt;TD&gt;11/27/2017&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;326&lt;/TD&gt;&lt;TD&gt;2/1/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;327&lt;/TD&gt;&lt;TD&gt;3/5/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;328&lt;/TD&gt;&lt;TD&gt;2/5/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;329&lt;/TD&gt;&lt;TD&gt;1/5/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;330&lt;/TD&gt;&lt;TD&gt;12/5/2017&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;331&lt;/TD&gt;&lt;TD&gt;11/6/2017&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;332&lt;/TD&gt;&lt;TD&gt;11/13/2017&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;333&lt;/TD&gt;&lt;TD&gt;2/28/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;334&lt;/TD&gt;&lt;TD&gt;2/28/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;335&lt;/TD&gt;&lt;TD&gt;2/26/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;336&lt;/TD&gt;&lt;TD&gt;2/26/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;337&lt;/TD&gt;&lt;TD&gt;2/23/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;338&lt;/TD&gt;&lt;TD&gt;2/21/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;339&lt;/TD&gt;&lt;TD&gt;2/21/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;340&lt;/TD&gt;&lt;TD&gt;2/20/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;341&lt;/TD&gt;&lt;TD&gt;2/20/2018&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I would like to loop through this dataset and update the Flag column with a 1 depending on information obtained&amp;nbsp;in the following condition by cust_id:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;-No fee for up to three transactions per rolling 30-day period.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;This would update the dataset to be the following :&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;Cust_ID&lt;/TD&gt;&lt;TD&gt;TransactionID&lt;/TD&gt;&lt;TD&gt;POST_DATE&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;FEE&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;321&lt;/TD&gt;&lt;TD&gt;2/28/2018&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;322&lt;/TD&gt;&lt;TD&gt;2/10/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;323&lt;/TD&gt;&lt;TD&gt;2/2/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;324&lt;/TD&gt;&lt;TD&gt;2/1/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;325&lt;/TD&gt;&lt;TD&gt;11/27/2017&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;326&lt;/TD&gt;&lt;TD&gt;2/1/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;327&lt;/TD&gt;&lt;TD&gt;3/5/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;328&lt;/TD&gt;&lt;TD&gt;2/5/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;329&lt;/TD&gt;&lt;TD&gt;1/5/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;330&lt;/TD&gt;&lt;TD&gt;12/5/2017&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;987&lt;/TD&gt;&lt;TD&gt;331&lt;/TD&gt;&lt;TD&gt;11/6/2017&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;332&lt;/TD&gt;&lt;TD&gt;11/13/2017&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;333&lt;/TD&gt;&lt;TD&gt;2/28/2018&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;334&lt;/TD&gt;&lt;TD&gt;2/28/2018&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;335&lt;/TD&gt;&lt;TD&gt;2/26/2018&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;336&lt;/TD&gt;&lt;TD&gt;2/26/2018&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;337&lt;/TD&gt;&lt;TD&gt;2/23/2018&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;338&lt;/TD&gt;&lt;TD&gt;2/21/2018&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;339&lt;/TD&gt;&lt;TD&gt;2/21/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;340&lt;/TD&gt;&lt;TD&gt;2/20/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;654&lt;/TD&gt;&lt;TD&gt;341&lt;/TD&gt;&lt;TD&gt;2/20/2018&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have been trying to retain the current record value but i have not been able to do it. I have got the flag only validation the current record with the next record.&amp;nbsp;There's tons of documentation online that&amp;nbsp;&lt;EM&gt;sort of&lt;/EM&gt;&amp;nbsp;applies, but nothing specific enough and try as I might, I can't seem to work it out.&amp;nbsp; I've been tempted to export the data to a file, parse it using VB and then reimport, but that is&amp;nbsp;&lt;EM&gt;horribly&lt;/EM&gt;&amp;nbsp;backwards and inefficient. Plus, I won't learn anything about SAS.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help would be greatly appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Diego&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 17:21:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494557#M130342</guid>
      <dc:creator>DiegoDiaz</dc:creator>
      <dc:date>2018-09-11T17:21:49Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing a row in a dataset with the followings one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494569#M130347</link>
      <description>&lt;P&gt;So you want FEE=0 as a starting point, but if three transactions happen for the same cust_id, you want the fourth to have FEE=1, correct?&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 17:41:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494569#M130347</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2018-09-11T17:41:57Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing a row in a dataset with the followings one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494576#M130349</link>
      <description>&lt;P&gt;Yes, The starting to point should be 0, but the fourth or the next ones should be 1 if the were posted &lt;SPAN&gt;per rolling 30-day period&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 17:51:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494576#M130349</guid>
      <dc:creator>DiegoDiaz</dc:creator>
      <dc:date>2018-09-11T17:51:30Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing a row in a dataset with the followings one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494583#M130351</link>
      <description>&lt;P&gt;If, for any post_date, there are more that 3 transactions between post_date-29 and post_date (inclusive) then fee=1.&amp;nbsp; BUT, while your data are grouped by cust_id, they are not sorted by date within cust_id.&amp;nbsp; So, to avoid sorting, you can use a double dow.&amp;nbsp; I.e. have 2 do loops reading each cust_id.&amp;nbsp; The first loop increments a subset of a data array (every date from post_date through post_date+29).&amp;nbsp; The second loop checks the result for any given post_date, looking for values over 3:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input Cust_ID TransactionID POST_DATE :mmddyy10.;
  format post_date date9.;
  *if cust_id=987;
datalines;
123 321 2/28/2018   
123 322 2/10/2018   
123 323 2/2/2018   
123 324 2/1/2018   
123 325 11/27/2017   
456 326 2/1/2018   
987 327 3/5/2018   
987 328 2/5/2018   
987 329 1/5/2018   
987 330 12/5/2017   
987 331 11/6/2017   
654 332 11/13/2017   
654 333 2/28/2018   
654 334 2/28/2018   
654 335 2/26/2018   
654 336 2/26/2018   
654 337 2/23/2018   
654 338 2/21/2018   
654 339 2/21/2018   
654 340 2/20/2018   
654 341 2/20/2018   
run;

%let lower_bound=%sysfunc(inputn(01jan2017,date9.));
%let upper_bound=%sysfunc(inputn(31jan2019,date9.));

data want (drop=_:);
  array _count{&amp;amp;lower_bound:&amp;amp;upper_bound} ;
  do until (last.cust_id);
    set have;
    by cust_id notsorted;
    do _d=post_date to post_date+29;
      _count{_d}=sum(_count{_d},1);
    end;
  end;
  do until (last.cust_id);
    set have;
    by cust_id notsorted;
    fee=(_count{post_date}&amp;gt;3);
    output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Notice the _count array is index by date.&amp;nbsp; And the lower bound of the index is set to the numerical equivalent of sas data value 01jan2017, and the upper bound to the equivalent of 31jan2019.&amp;nbsp; Just use a lower bound date as the minimum expected date, and the upper bound at least 29 days after the highest expected date.&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 17:58:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494583#M130351</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-09-11T17:58:19Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing a row in a dataset with the followings one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494590#M130355</link>
      <description>&lt;P&gt;If occurs to me that you expected transactions to be sorted in descending order within a given cust_id.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If so, then presumably transaction 332 (first trans for id 654)&amp;nbsp;is in error.&amp;nbsp; It's the only transaction that doesn't follow the descending date rule.&amp;nbsp; If that was unintentional, then the solution is a very simple self-merge data step:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want2;
  merge have
        have (firstobs=4 keep=cust_id post_date
              rename=(cust_id=_id4 post_date=_pd4));
  if cust_id=_id4 and (post_date&amp;lt; _pd4+29) then fee=1;
  else fee=0;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 11 Sep 2018 18:11:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494590#M130355</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-09-11T18:11:54Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing a row in a dataset with the followings one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494608#M130366</link>
      <description>&lt;P&gt;This is awesome!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I really appreciate it&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks!&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 18:59:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494608#M130366</guid>
      <dc:creator>DiegoDiaz</dc:creator>
      <dc:date>2018-09-11T18:59:22Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing a row in a dataset with the followings one</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494851#M130486</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input Cust_ID TransactionID POST_DATE :mmddyy10.;
  format post_date date9.;
datalines;
123 321 2/28/2018   
123 322 2/10/2018   
123 323 2/2/2018   
123 324 2/1/2018   
123 325 11/27/2017   
456 326 2/1/2018   
987 327 3/5/2018   
987 328 2/5/2018   
987 329 1/5/2018   
987 330 12/5/2017   
987 331 11/6/2017   
654 332 11/13/2017   
654 333 2/28/2018   
654 334 2/28/2018   
654 335 2/26/2018   
654 336 2/26/2018   
654 337 2/23/2018   
654 338 2/21/2018   
654 339 2/21/2018   
654 340 2/20/2018   
654 341 2/20/2018   
run;
proc sql;
create table want as
 select *, case when
(select count(distinct TransactionID) from have 
 where Cust_ID=a.Cust_ID and POST_DATE between a.POST_DATE-29 and a.POST_DATE) &amp;gt; 3 then 1 else 0 end as FEE
  from have as a;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 12 Sep 2018 13:38:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-a-row-in-a-dataset-with-the-followings-one/m-p/494851#M130486</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-09-12T13:38:38Z</dc:date>
    </item>
  </channel>
</rss>

