<?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: Data manipulation based on values in base SAS in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584250#M166358</link>
    <description>&lt;P&gt;I would like to appreciate&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;'s thinking to make it so less verbose and convenient. While it's easy to understand, the thinking along those lines is indeed a great wit. &lt;EM&gt;&lt;STRONG&gt;Neat and original&lt;/STRONG&gt;&lt;/EM&gt;. There is one caveat, it might not be fastest(well, who's to say) when processing humongous dataset size, but by all means &lt;EM&gt;&lt;STRONG&gt;Kudos! to&amp;nbsp;&lt;/STRONG&gt;&lt;/EM&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;. Cheers!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 27 Aug 2019 14:28:22 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2019-08-27T14:28:22Z</dc:date>
    <item>
      <title>Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584205#M166328</link>
      <description>&lt;P&gt;Hello all,&lt;BR /&gt;I have a situation that I cannot solve, and I would appreciate your valuable input.&lt;BR /&gt;I have the following data:&lt;/P&gt;&lt;P&gt;Policy_No From_Date To_Date Amount Ind&lt;BR /&gt;10864457 08Nov2013 08May2014 29,93 Pos&lt;BR /&gt;10864457 08May2014 08Nov2014 28,43 Pos&lt;BR /&gt;10864457 08Nov2014 08May2015 28,43 Pos&lt;BR /&gt;10864457 08May2015 08Nov2015 29,91 Pos&lt;BR /&gt;10864457 08Nov2015 08May2016 26,91 Pos&lt;BR /&gt;10864457 05Jan2016 08May2016 -18,39 Neg&lt;BR /&gt;10988488 23Sep2013 23Sep2014 63,89 Pos&lt;BR /&gt;11295729 04Dec2015 04Jun2016 38,69 Pos&lt;BR /&gt;11295729 10Feb2016 19Feb2016 -1,94 Neg&lt;BR /&gt;11295729 19Feb2016 04Jun2016 -22,56 Neg&lt;/P&gt;&lt;P&gt;I need to merge the Neg values into the last Pos Value of each Policy (my key)&lt;BR /&gt;And replace the last To Date of the last Pos line with the min From Date of the Neg line(s).&lt;BR /&gt;My output shall look like this:&lt;BR /&gt;Policy_No From_Date To_Date Amount Ind&lt;BR /&gt;10864457 08Nov2013 08May2014 29,93&lt;BR /&gt;10864457 08May2014 08Nov2014 28,43&lt;BR /&gt;10864457 08Nov2014 08May2015 28,43&lt;BR /&gt;10864457 08May2015 08Nov2015 29,91&lt;BR /&gt;10864457 08Nov2015 05Jan2016 8,52&lt;BR /&gt;10988488 23Sep2013 23Sep2014 63,89&lt;BR /&gt;11295729 04Dec2015 10Feb2016 14,19&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Comments:&lt;BR /&gt;For Policy 10864457 the LAST Pos Value was 26,91 and the Neg Value was -18,39. So the result is To_Date = 05Jan2016 (which is the From date of the Neg Value and the new Amount is (26,91 – 18,39) = 8,52&lt;BR /&gt;For Policy 10988488 nothing changes since there is no Neg Value&lt;/P&gt;&lt;P&gt;For Policy 11292729 the To_Date becomes 10Feb2016 (the Min From Date of the Neg Values and the amount is now (38,69 – 1,94 – 22,56) = 14,19&lt;/P&gt;&lt;P&gt;Any suggestions on how to go on this?&lt;BR /&gt;Thank you in advance!&lt;/P&gt;</description>
      <pubDate>Tue, 27 Aug 2019 12:58:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584205#M166328</guid>
      <dc:creator>NikosStratis</dc:creator>
      <dc:date>2019-08-27T12:58:59Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584224#M166339</link>
      <description>&lt;P&gt;Sort by descending date_from, accumulate while ind = 'Neg', and add at first 'Pos' observation. Then re-sort to original order.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Policy_No $ From_Date :date9. To_Date :date9. Amount :commax. Ind $;
format from_date to_date date9.;
datalines;
10864457 08Nov2013 08May2014 29,93 Pos
10864457 08May2014 08Nov2014 28,43 Pos
10864457 08Nov2014 08May2015 28,43 Pos
10864457 08May2015 08Nov2015 29,91 Pos
10864457 08Nov2015 08May2016 26,91 Pos
10864457 05Jan2016 08May2016 -18,39 Neg
10988488 23Sep2013 23Sep2014 63,89 Pos
11295729 04Dec2015 04Jun2016 38,69 Pos
11295729 10Feb2016 19Feb2016 -1,94 Neg
11295729 19Feb2016 04Jun2016 -22,56 Neg
;

proc sort data=have;
by policy_no descending from_date;
run;

data want;
set have;
by policy_no;
if first.policy_no
then neg_amount = 0;
if ind = 'Pos'
then do;
  amount + neg_amount;
  output;
  neg_amount = 0;
end;
else neg_amount + amount;
drop neg_amount;
run;

proc sort data=want;
by policy_no from_date;
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;Policy_
   No       From_Date      To_Date    Amount    Ind

10864457    08NOV2013    08MAY2014     29.93    Pos
10864457    08MAY2014    08NOV2014     28.43    Pos
10864457    08NOV2014    08MAY2015     28.43    Pos
10864457    08MAY2015    08NOV2015     29.91    Pos
10864457    08NOV2015    08MAY2016      8.52    Pos
10988488    23SEP2013    23SEP2014     63.89    Pos
11295729    04DEC2015    04JUN2016     14.19    Pos
&lt;/PRE&gt;
&lt;P&gt;Note how I presented example data in a data step with datalines. Please do so yourself in the future.&lt;/P&gt;</description>
      <pubDate>Tue, 27 Aug 2019 13:39:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584224#M166339</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-08-27T13:39:31Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584225#M166340</link>
      <description>&lt;P&gt;please&amp;nbsp; try below code&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Policy_No From_Date:date9. To_Date:date9. Amount Ind$;
format From_Date To_Date date9.;
cards;
10864457 08Nov2013 08May2014 29.93 Pos
10864457 08May2014 08Nov2014 28.43 Pos
10864457 08Nov2014 08May2015 28.43 Pos
10864457 08May2015 08Nov2015 29.91 Pos
10864457 08Nov2015 08May2016 26.91 Pos
10864457 05Jan2016 08May2016 -18.39 Neg
10988488 23Sep2013 23Sep2014 63.89 Pos
11295729 04Dec2015 04Jun2016 38.69 Pos
11295729 10Feb2016 19Feb2016 -1.94 Neg
11295729 19Feb2016 04Jun2016 -22.56 Neg
;

proc sql;
create table neg as select Policy_No, min(From_Date)  as From_Date2 format=date9., sum(amount) as amount2 from have where lowcase(ind)='neg' group by Policy_No;
quit;

data want;
merge have(in=a where=(ind='Pos')) neg(in=b);
by Policy_No;
if a and b and last.Policy_No then do;
To_Date=From_Date2;
amount=amount-abs(amount2);
end;
drop amount2 From_Date2;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 27 Aug 2019 13:40:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584225#M166340</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2019-08-27T13:40:53Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584240#M166352</link>
      <description>&lt;P&gt;My share of fun too. Just a bit of gymastics to park in temp vars and a verbose&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input Policy_No $ (From_Date To_Date)  (:date9.) Amount :comma10.2 Ind $;
format From_Date To_Date  date9.;
cards;
10864457 08Nov2013 08May2014 29,93 Pos
10864457 08May2014 08Nov2014 28,43 Pos
10864457 08Nov2014 08May2015 28,43 Pos
10864457 08May2015 08Nov2015 29,91 Pos
10864457 08Nov2015 08May2016 26,91 Pos
10864457 05Jan2016 08May2016 -18,39 Neg
10988488 23Sep2013 23Sep2014 63,89 Pos
11295729 04Dec2015 04Jun2016 38,69 Pos
11295729 10Feb2016 19Feb2016 -1,94 Neg
11295729 19Feb2016 04Jun2016 -22,56 Neg
;


data want;
 do _n_=1 by 1 until(last.Policy_No);
  set have;
  by Policy_No From_Date;
  if Ind='Pos' then do;
  _last_positive_amt=Amount;
  _last_positive_date=From_Date;
  end;
  else if Ind='Neg' then do;
  _min_neg_date=min(_min_neg_date,From_Date);
  _min_neg_amt=sum(_min_neg_amt,abs(Amount));
  end;
 end;
 do _n_=1 to _n_ ;
  set have;
  if _f then continue;
  if From_Date=_last_positive_date and _min_neg_date&amp;gt;. then do;
  amount=_last_positive_amt-abs(_min_neg_amt);
  to_date=_min_neg_date;
  _f=1;
  end;
  output;
end;
drop _:;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 27 Aug 2019 14:08:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584240#M166352</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-08-27T14:08:25Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584241#M166353</link>
      <description>&lt;P&gt;Hello!&lt;/P&gt;&lt;P&gt;Thank you very much for your quick response!&lt;/P&gt;&lt;P&gt;The Amount is OK, but the From Date issue remains.&lt;/P&gt;</description>
      <pubDate>Tue, 27 Aug 2019 14:09:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584241#M166353</guid>
      <dc:creator>NikosStratis</dc:creator>
      <dc:date>2019-08-27T14:09:52Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584242#M166354</link>
      <description>This is great!&lt;BR /&gt;Thank you!!!</description>
      <pubDate>Tue, 27 Aug 2019 14:10:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584242#M166354</guid>
      <dc:creator>NikosStratis</dc:creator>
      <dc:date>2019-08-27T14:10:41Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584245#M166356</link>
      <description>&lt;P&gt;This works fine!&lt;/P&gt;&lt;P&gt;Thank you very much for your quick (and valuable!!!) reply!&lt;/P&gt;</description>
      <pubDate>Tue, 27 Aug 2019 14:14:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584245#M166356</guid>
      <dc:creator>NikosStratis</dc:creator>
      <dc:date>2019-08-27T14:14:49Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584250#M166358</link>
      <description>&lt;P&gt;I would like to appreciate&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;'s thinking to make it so less verbose and convenient. While it's easy to understand, the thinking along those lines is indeed a great wit. &lt;EM&gt;&lt;STRONG&gt;Neat and original&lt;/STRONG&gt;&lt;/EM&gt;. There is one caveat, it might not be fastest(well, who's to say) when processing humongous dataset size, but by all means &lt;EM&gt;&lt;STRONG&gt;Kudos! to&amp;nbsp;&lt;/STRONG&gt;&lt;/EM&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;. Cheers!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Aug 2019 14:28:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584250#M166358</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-08-27T14:28:22Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584265#M166364</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/246170"&gt;@NikosStratis&lt;/a&gt;&amp;nbsp; &amp;nbsp;how about this teaser &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;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input Policy_No $ (From_Date To_Date)  (:date9.) Amount :comma10.2 Ind $;
format From_Date To_Date  date9.;
cards;
10864457 08Nov2013 08May2014 29,93 Pos
10864457 08May2014 08Nov2014 28,43 Pos
10864457 08Nov2014 08May2015 28,43 Pos
10864457 08May2015 08Nov2015 29,91 Pos
10864457 08Nov2015 08May2016 26,91 Pos
10864457 05Jan2016 08May2016 -18,39 Neg
10988488 23Sep2013 23Sep2014 63,89 Pos
11295729 04Dec2015 04Jun2016 38,69 Pos
11295729 10Feb2016 19Feb2016 -1,94 Neg
11295729 19Feb2016 04Jun2016 -22,56 Neg
;
proc sql;
create table want(drop=amt) as
select *,ifn(From_Date= max((ind='Pos')*From_Date),amt- sum((ind='Neg')*abs(amt)),amt) as Amount
from have(rename=(amount=amt))
group by  Policy_No
having ind='Pos'
order by Policy_No, From_date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 27 Aug 2019 14:51:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584265#M166364</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-08-27T14:51:05Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584437#M166463</link>
      <description>&lt;P&gt;Hi &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt; , first, let me thank you very much for your support.&lt;/P&gt;&lt;P&gt;There is still a problem with the To_Date that i need to be replaced. This was the issue I could not resolve.&lt;/P&gt;&lt;P&gt;Below is my initial description.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;I need to merge the Neg values into the last Pos Value of each Policy (my key)&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;And replace the last To Date of the last Pos line with the min From Date of the Neg line(s).&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;My output shall look like this:&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;Policy_No From_Date To_Date Amount Ind&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;10864457 08Nov2013 08May2014 29,93&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;10864457 08May2014 08Nov2014 28,43&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;10864457 08Nov2014 08May2015 28,43&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;10864457 08May2015 08Nov2015 29,91&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;10864457 08Nov2015 05Jan2016 8,52&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;10988488 23Sep2013 23Sep2014 63,89&lt;/EM&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;11295729 04Dec2015 10Feb2016 14,19&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000FF"&gt;&lt;EM&gt;Thanks!&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 06:42:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584437#M166463</guid>
      <dc:creator>NikosStratis</dc:creator>
      <dc:date>2019-08-28T06:42:43Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584450#M166469</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/246170"&gt;@NikosStratis&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hello!&lt;/P&gt;
&lt;P&gt;Thank you very much for your quick response!&lt;/P&gt;
&lt;P&gt;The Amount is OK, but the From Date issue remains.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I adapted my code to handle the date:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Policy_No $ From_Date :date9. To_Date :date9. Amount :commax. Ind $;
format from_date to_date date9.;
datalines;
10864457 08Nov2013 08May2014 29,93 Pos
10864457 08May2014 08Nov2014 28,43 Pos
10864457 08Nov2014 08May2015 28,43 Pos
10864457 08May2015 08Nov2015 29,91 Pos
10864457 08Nov2015 08May2016 26,91 Pos
10864457 05Jan2016 08May2016 -18,39 Neg
10988488 23Sep2013 23Sep2014 63,89 Pos
11295729 04Dec2015 04Jun2016 38,69 Pos
11295729 10Feb2016 19Feb2016 -1,94 Neg
11295729 19Feb2016 04Jun2016 -22,56 Neg
;

proc sort data=have;
by policy_no descending from_date;
run;

data want;
set have;
by policy_no;
retain neg_amount neg_date;
if first.policy_no
then do;
  neg_amount = 0;
  neg_date = .;
end;
if ind = 'Pos'
then do;
  amount + neg_amount;
  if neg_date ne .
  then do;
    to_date = neg_date;
    neg_date = .;
  end;
  output;
  neg_amount = 0;
end;
else do;
  neg_amount + amount;
  neg_date = (ifn(neg_date = .,from_date,min(from_date,neg_date)));
end;
drop neg_amount neg_date;
run;

proc sort data=want;
by policy_no from_date;
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;Policy_
   No       From_Date      To_Date    Amount    Ind

10864457    08NOV2013    08MAY2014     29.93    Pos
10864457    08MAY2014    08NOV2014     28.43    Pos
10864457    08NOV2014    08MAY2015     28.43    Pos
10864457    08MAY2015    08NOV2015     29.91    Pos
10864457    08NOV2015    05JAN2016      8.52    Pos
10988488    23SEP2013    23SEP2014     63.89    Pos
11295729    04DEC2015    10FEB2016     14.19    Pos
&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 07:40:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584450#M166469</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-08-28T07:40:49Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584451#M166470</link>
      <description>&lt;P&gt;Thanks again!&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 07:44:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584451#M166470</guid>
      <dc:creator>NikosStratis</dc:creator>
      <dc:date>2019-08-28T07:44:10Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584517#M166503</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/246170"&gt;@NikosStratis&lt;/a&gt;&amp;nbsp; Good morning.&amp;nbsp; I left that on purpose to make it interesting and interactive for you to figure out as it is just another &lt;EM&gt;&lt;STRONG&gt;copy/paste &lt;/STRONG&gt;&lt;/EM&gt;of the logic that uses &lt;EM&gt;&lt;STRONG&gt;min and ifn &lt;/STRONG&gt;&lt;/EM&gt;as opposed to&amp;nbsp;&lt;EM&gt;&lt;STRONG&gt;max and ifn &lt;/STRONG&gt;&lt;/EM&gt;earlier. Hmm this gives me the impression you didn't read or understand the code. LOL&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Come on! bro! that's not fair. Anyways,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Policy_No $ (From_Date To_Date)  (:date9.) Amount :comma10.2 Ind $;
format From_Date To_Date  date9.;
cards;
10864457 08Nov2013 08May2014 29,93 Pos
10864457 08May2014 08Nov2014 28,43 Pos
10864457 08Nov2014 08May2015 28,43 Pos
10864457 08May2015 08Nov2015 29,91 Pos
10864457 08Nov2015 08May2016 26,91 Pos
10864457 05Jan2016 08May2016 -18,39 Neg
10988488 23Sep2013 23Sep2014 63,89 Pos
11295729 04Dec2015 04Jun2016 38,69 Pos
11295729 10Feb2016 19Feb2016 -1,94 Neg
11295729 19Feb2016 04Jun2016 -22,56 Neg
;

proc sql;
create table want(drop=amt min) as
select Policy_No,min(ifn(ind='Neg',From_Date,.)) as min,From_date,
ifn(From_Date= max((ind='Pos')*From_Date) and calculated min&amp;gt;.,calculated min,To_Date)
as To_Date format=date9. ,
ifn(From_Date= max((ind='Pos')*From_Date),amt- sum((ind='Neg')*abs(amt)),amt) as Amount,
ind
from have(rename=(amount=amt))
group by  Policy_No
having ind='Pos'
order by Policy_No, From_date;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 28 Aug 2019 12:06:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584517#M166503</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-08-28T12:06:58Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584546#M166514</link>
      <description>&lt;P&gt;Hello &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yes, you are right, I did not read the code...and I apologize for it!&lt;/P&gt;&lt;P&gt;What you sent me is exactly what i need!&lt;/P&gt;&lt;P&gt;Thanks again!&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 13:09:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584546#M166514</guid>
      <dc:creator>NikosStratis</dc:creator>
      <dc:date>2019-08-28T13:09:38Z</dc:date>
    </item>
    <item>
      <title>Re: Data manipulation based on values in base SAS</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584547#M166515</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/246170"&gt;@NikosStratis&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hello &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes, you are right, I did not read the code...and I &lt;STRONG&gt;&lt;STRIKE&gt;apologize&lt;/STRIKE&gt;&lt;/STRONG&gt; for it!&lt;/P&gt;
&lt;P&gt;What you sent me is exactly what i need!&lt;/P&gt;
&lt;P&gt;Thanks again!&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Need not apologize. I was just pulling your leg. It's fun. &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 28 Aug 2019 13:17:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-manipulation-based-on-values-in-base-SAS/m-p/584547#M166515</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2019-08-28T13:17:00Z</dc:date>
    </item>
  </channel>
</rss>

