<?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: Getting the Clustured ID in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Getting-the-Clustured-ID/m-p/374795#M89780</link>
    <description>ignore the previous output...i want output like..&lt;BR /&gt;ExposureId	LimitId	CollateralId	ClusterId&lt;BR /&gt;1	L1	C1	1&lt;BR /&gt;2	L1	C2	1&lt;BR /&gt;3	L2	C1	1&lt;BR /&gt;4	L2	C3	1&lt;BR /&gt;5	L3	C4	2&lt;BR /&gt;6	L3	C5	2&lt;BR /&gt;7	L4	C6	3&lt;BR /&gt;8	L5	C5	2&lt;BR /&gt;&lt;BR /&gt;Thank You</description>
    <pubDate>Tue, 11 Jul 2017 05:53:25 GMT</pubDate>
    <dc:creator>Rahul_SAS</dc:creator>
    <dc:date>2017-07-11T05:53:25Z</dc:date>
    <item>
      <title>Getting the Clustured ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-the-Clustured-ID/m-p/374794#M89779</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have the data like&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="229"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;&lt;STRONG&gt;ExposureId&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;&lt;STRONG&gt;LimitId&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;&lt;STRONG&gt;CollateralId&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C2&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C3&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C4&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;6&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;7&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C6&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and want the output like&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="229"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;&lt;STRONG&gt;ExposureId&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;&lt;STRONG&gt;LimitId&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;&lt;STRONG&gt;CollateralId&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C2&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C1&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C3&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C4&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;6&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;7&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L4&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C6&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="87"&gt;
&lt;P&gt;8&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="56"&gt;
&lt;P&gt;L5&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="87"&gt;
&lt;P&gt;C5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please help.&lt;/P&gt;</description>
      <pubDate>Tue, 11 Jul 2017 05:51:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-the-Clustured-ID/m-p/374794#M89779</guid>
      <dc:creator>Rahul_SAS</dc:creator>
      <dc:date>2017-07-11T05:51:43Z</dc:date>
    </item>
    <item>
      <title>Re: Getting the Clustured ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-the-Clustured-ID/m-p/374795#M89780</link>
      <description>ignore the previous output...i want output like..&lt;BR /&gt;ExposureId	LimitId	CollateralId	ClusterId&lt;BR /&gt;1	L1	C1	1&lt;BR /&gt;2	L1	C2	1&lt;BR /&gt;3	L2	C1	1&lt;BR /&gt;4	L2	C3	1&lt;BR /&gt;5	L3	C4	2&lt;BR /&gt;6	L3	C5	2&lt;BR /&gt;7	L4	C6	3&lt;BR /&gt;8	L5	C5	2&lt;BR /&gt;&lt;BR /&gt;Thank You</description>
      <pubDate>Tue, 11 Jul 2017 05:53:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-the-Clustured-ID/m-p/374795#M89780</guid>
      <dc:creator>Rahul_SAS</dc:creator>
      <dc:date>2017-07-11T05:53:25Z</dc:date>
    </item>
    <item>
      <title>Re: Getting the Clustured ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-the-Clustured-ID/m-p/374920#M89818</link>
      <description>&lt;P&gt;Assuming there are not misisng value in any one of limitid and collateralid.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data x;
 input ExposureId LimitId $ CollateralId $ ;
cards;
1 L1 C1 
2 L1 C2 
3 L2 C1 
4 L2 C3 
5 L3 C4 
6 L3 C5 
7 L4 C6 
8 L5 C5 
;
run;
data have;
 set x(rename=(LimitId=from CollateralId=to));
 keep from to;
run;
data full;
  set have end=last;
  if _n_ eq 1 then do;
   declare hash h();
    h.definekey('node');
     h.definedata('node');
     h.definedone();
  end;
  output;
  node=from; h.replace();
  from=to; to=node;
  output;
  node=from; h.replace();
  if last then h.output(dataset:'node');
  drop node;
run;


data want(keep=node household);
declare hash ha(ordered:'a');
declare hiter hi('ha');
ha.definekey('count');
ha.definedata('last');
ha.definedone();
declare hash _ha(hashexp: 20);
_ha.definekey('key');
_ha.definedone();

if 0 then set full;
declare hash from_to(dataset:'full(where=(from is not missing and to is not missing))',hashexp:20,multidata:'y');
 from_to.definekey('from');
 from_to.definedata('to');
 from_to.definedone();

if 0 then set node;
declare hash no(dataset:'node');
declare hiter hi_no('no');
 no.definekey('node');
 no.definedata('node');
 no.definedone();
 

do while(hi_no.next()=0);
 household+1; output;
 count=1;
 key=node;_ha.add();
 last=node;ha.add();
 rc=hi.first();
 do while(rc=0);
   from=last;rx=from_to.find();
   do while(rx=0);
     key=to;ry=_ha.check();
      if ry ne 0 then do;
       node=to;output;rr=no.remove(key:node);
       key=to;_ha.add();
       count+1;
       last=to;ha.add();
      end;
      rx=from_to.find_next();
   end;
   rc=hi.next();
end;
ha.clear();_ha.clear();
end;
stop;
run;

data final_want;
 if _n_=1 then do;
  if 0 then set want;
  declare hash h(dataset:'want');
  h.definekey('node');
  h.definedata('household');
  h.definedone();
 end;
set x;
call missing(household);
rc=h.find(key:LimitId);
drop rc node;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 11 Jul 2017 12:26:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-the-Clustured-ID/m-p/374920#M89818</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-07-11T12:26:38Z</dc:date>
    </item>
  </channel>
</rss>

