<?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: Real time Problem how to aggregate on two variables based on the third variable value and get ou in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Real-time-Problem-how-to-aggregate-on-two-variables-based-on-the/m-p/434081#M107709</link>
    <description>Interesting problem. Hash objects could be part of a solution or a really horrible proc sql. Can't work on it right now,sorry.</description>
    <pubDate>Mon, 05 Feb 2018 07:55:50 GMT</pubDate>
    <dc:creator>error_prone</dc:creator>
    <dc:date>2018-02-05T07:55:50Z</dc:date>
    <item>
      <title>Real time Problem how to aggregate on two variables based on the third variable value and get output</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Real-time-Problem-how-to-aggregate-on-two-variables-based-on-the/m-p/434055#M107701</link>
      <description>&lt;P&gt;Hello Everyone, I facing a real Time problem as below. I have modified the data accordingly. Below is the data i have. Its transactional data.&lt;/P&gt;&lt;P&gt;Here Trn_code 'C' represent credit and 'D'&amp;nbsp; represent Debit.&lt;/P&gt;&lt;P&gt;Trn_key&amp;nbsp; trn_CODE&amp;nbsp;&amp;nbsp; Sender&amp;nbsp;&amp;nbsp; Receiver&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Amount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sender_in_receiver_list&amp;nbsp;&amp;nbsp;&amp;nbsp; Receiver_in_Sender_list&lt;/P&gt;&lt;P&gt;1234&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color="#993300"&gt;&lt;FONT color="#ff0000"&gt;John&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp; Louis&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 10000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; N&lt;BR /&gt;2233&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;David&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color="#ff0000"&gt;John&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;20000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Y&lt;BR /&gt;1111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Louis&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; David&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Y&lt;BR /&gt;2345&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thomas&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color="#993300"&gt;&lt;FONT color="#ff0000"&gt;John&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 30000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N&lt;BR /&gt;3456&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Daniel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Louis&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 25000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&lt;BR /&gt;4567&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color="#ff0000"&gt;John&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thomas&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 50000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now I need to get only observations where&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) (sender_in_receiver_list = 'Y' or&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Receiver_in_Sender_list = 'Y' )&amp;nbsp;&amp;nbsp;&amp;nbsp; AND&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) The aggregate amount received by receiver is greater than or equal to Minimum Aggregate Daily Amount (Threshold A= 5000)&amp;nbsp; AND&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3) The aggregate amount sent from sender must be greater than or equal to a Minimum Percentage [Threshold B = 10%] of the amount in Condition 2.&amp;nbsp;&amp;nbsp;&amp;nbsp; AND&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4) The aggregate amount sent from sender must be less than or equal to a Maximum Percentage [Threshold C = 40% ] of the amount in Condition 2.&lt;/P&gt;&lt;P&gt;&amp;nbsp;/**/&lt;/P&gt;&lt;P&gt;if we take example of John&lt;BR /&gt;&amp;nbsp;He sent money to Louis and Thomas ( 10000+50000 = 60000) and recived from David and thomas (20000+30000 =&amp;nbsp; 50000)&lt;BR /&gt;&amp;nbsp; condition 1 satisfy as Jhon occurs in both send and receiver list.&lt;BR /&gt;&amp;nbsp; condition 2 satisfy as jhon has received a total of 50000 which is &amp;gt;= 5000.&lt;BR /&gt;&amp;nbsp; condition 3 satisfy as jhon has sent 60000 which is &amp;gt;= (10% of 50000).&lt;BR /&gt;&amp;nbsp; condition 4 is satisfied as jhon has sent 60000 which is &amp;lt;= (120% of 50000)&lt;/P&gt;&lt;P&gt;I should get Johns in my output.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will appreciate help on this. Thanks in advance !! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 05 Feb 2018 06:16:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Real-time-Problem-how-to-aggregate-on-two-variables-based-on-the/m-p/434055#M107701</guid>
      <dc:creator>Priya_26</dc:creator>
      <dc:date>2018-02-05T06:16:14Z</dc:date>
    </item>
    <item>
      <title>Re: Real time Problem how to aggregate on two variables based on the third variable value and get ou</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Real-time-Problem-how-to-aggregate-on-two-variables-based-on-the/m-p/434081#M107709</link>
      <description>Interesting problem. Hash objects could be part of a solution or a really horrible proc sql. Can't work on it right now,sorry.</description>
      <pubDate>Mon, 05 Feb 2018 07:55:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Real-time-Problem-how-to-aggregate-on-two-variables-based-on-the/m-p/434081#M107709</guid>
      <dc:creator>error_prone</dc:creator>
      <dc:date>2018-02-05T07:55:50Z</dc:date>
    </item>
    <item>
      <title>Re: Real time Problem how to aggregate on two variables based on the third variable value and get ou</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Real-time-Problem-how-to-aggregate-on-two-variables-based-on-the/m-p/434157#M107723</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Trn_key  trn_CODE $  Sender  $ Receiver   $  Amount      sender_in_receiver_list $   Receiver_in_Sender_list $;
cards;
1234        C                   John       Louis        10000                   Y                             N
2233        D                    David      John        20000                   N                            Y
1111        D                     Louis      David      10000                   N                            Y
2345        C                   Thomas     John       30000                   Y                           N
3456        D                    Daniel       Louis       25000                   Y                           Y
4567        C                    John       Thomas     50000                   Y                           Y
;
run;
data k;
 set have;
 k=Sender;if sender_in_receiver_list='Y' then output;
 k=Receiver;if Receiver_in_Sender_list='Y' then output;
 keep k;
run;
proc sort data=k nodupkey;by k;run;
data sender;
 set have;
 k=Sender;
 keep k amount;
run;
data receiver;
 set have;
 k=Receiver;v=Receiver_in_Sender_list;
 keep k amount;
run;
data want;
 if _n_=1 then do;
  if 0 then set sender;
  declare hash s(dataset:'sender',multidata:'y');
  s.definekey('k');
  s.definedata('amount');
  s.definedone();
  
  if 0 then set receiver;
  declare hash r(dataset:'receiver',multidata:'y');
  r.definekey('k');
  r.definedata('amount');
  r.definedone();
 end;
set k;
rc=r.find();
amount_receive=0;
do while(rc=0);
 amount_receive+amount;
 rc=r.find_next();
end;
condition2=ifn(amount_receive&amp;gt;=5000,1,0);

rc=s.find();
amount_send=0;
do while(rc=0);
 amount_send+amount;
 rc=s.find_next();
end;
condition3=ifn(amount_send&amp;gt;=amount_receive*0.1,1,0);
condition4=ifn(amount_send&amp;lt;=amount_receive*1.2,1,0);

if condition2 and condition3 and condition4 then output;
keep k;
run;
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 05 Feb 2018 13:28:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Real-time-Problem-how-to-aggregate-on-two-variables-based-on-the/m-p/434157#M107723</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-02-05T13:28:31Z</dc:date>
    </item>
  </channel>
</rss>

