<?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: Combine rows of data with various connections across two columns in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334638#M272256</link>
    <description>&lt;P&gt;A3 is not included because the two IDs are seperate from each other. If A3 had equaled B1, B2, or B3 then it would have been included in the grouping. However, since B4 is a new ID, it is not included.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Another example would be:&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID1_A&lt;/TD&gt;&lt;TD&gt;ID2_B&lt;/TD&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;apple&lt;/TD&gt;&lt;TD&gt;alpha&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;strawberry&lt;/TD&gt;&lt;TD&gt;bravo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;apple&lt;/TD&gt;&lt;TD&gt;charlie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;strawberry&lt;/TD&gt;&lt;TD&gt;bravo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;banana&lt;/TD&gt;&lt;TD&gt;delta&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;purple&lt;/TD&gt;&lt;TD&gt;eggplant&lt;/TD&gt;&lt;TD&gt;echo&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;becomes:&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID_combined&lt;/TD&gt;&lt;TD&gt;Name_combined&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;alpha bravo charlie bravo delta&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;purple&lt;/TD&gt;&lt;TD&gt;echo&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Tue, 21 Feb 2017 13:08:22 GMT</pubDate>
    <dc:creator>jhzsquared</dc:creator>
    <dc:date>2017-02-21T13:08:22Z</dc:date>
    <item>
      <title>Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334571#M272252</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm at a loss on how to merge/combine rows effectively when there are multiple overlapping connections.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Essentially explained verbally: &amp;nbsp;what I am trying to do is to take A and B and rename them by the first of the A's in the group. The problem is, A1= B1 and B2 but B2= A1 and A2. Thus, the result should just say A1= the names of B1 B2 and A2. These connections occur over multiple rows.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In an example:&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have:&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID1_A&lt;/TD&gt;&lt;TD&gt;ID2_B&lt;/TD&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;alpha&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;bravo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;charlie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;bravo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;delta&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;echo&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want: &amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID_combined&lt;/TD&gt;&lt;TD&gt;Name_combined&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;alpha bravo charlie bravo delta&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;echo&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks! I'm on SAS university edition&lt;/P&gt;</description>
      <pubDate>Tue, 21 Feb 2017 05:53:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334571#M272252</guid>
      <dc:creator>jhzsquared</dc:creator>
      <dc:date>2017-02-21T05:53:28Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334577#M272253</link>
      <description>&lt;P&gt;What constitutes a group? At the moment I have no idea why you combine the first 5 observations, but start a new group with observation 6.&lt;/P&gt;</description>
      <pubDate>Tue, 21 Feb 2017 07:03:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334577#M272253</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2017-02-21T07:03:13Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334590#M272254</link>
      <description>&lt;PRE&gt;

I don't know why A3 wouldn't be include ,since

1	3	charlie
3	4	echo


1-&amp;gt;3-&amp;gt;4
&lt;/PRE&gt;</description>
      <pubDate>Tue, 21 Feb 2017 08:42:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334590#M272254</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-02-21T08:42:02Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334638#M272256</link>
      <description>&lt;P&gt;A3 is not included because the two IDs are seperate from each other. If A3 had equaled B1, B2, or B3 then it would have been included in the grouping. However, since B4 is a new ID, it is not included.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Another example would be:&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID1_A&lt;/TD&gt;&lt;TD&gt;ID2_B&lt;/TD&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;apple&lt;/TD&gt;&lt;TD&gt;alpha&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;strawberry&lt;/TD&gt;&lt;TD&gt;bravo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;apple&lt;/TD&gt;&lt;TD&gt;charlie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;strawberry&lt;/TD&gt;&lt;TD&gt;bravo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;banana&lt;/TD&gt;&lt;TD&gt;delta&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;purple&lt;/TD&gt;&lt;TD&gt;eggplant&lt;/TD&gt;&lt;TD&gt;echo&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;becomes:&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID_combined&lt;/TD&gt;&lt;TD&gt;Name_combined&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;alpha bravo charlie bravo delta&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;purple&lt;/TD&gt;&lt;TD&gt;echo&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 21 Feb 2017 13:08:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334638#M272256</guid>
      <dc:creator>jhzsquared</dc:creator>
      <dc:date>2017-02-21T13:08:22Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334646#M272257</link>
      <description>&lt;P&gt;There may be a more direct way, but the following appears to meet your specifications:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data have;
  infile cards dlm='09'x;
  input ID1_A	ID2_B	Name $;
  cards;
1	1	alpha
1	2	bravo
1	3	charlie
2	2	bravo
2	3	delta
3	4	echo
;

data need1;
  set have;
  recnum=_n_;
run;

proc sql;
  create table need2 as
    select recnum,count(*) as count
      from need1
        group by id2_b
          order by recnum
  ;
quit;

data need2 (rename=(id1_a=ID_combined));
  merge need1 need2;
  by recnum;
  retain hold_id1_a;
  if _n_ eq 1 then hold_id1_a=id1_a;
  else if count gt 1 then id1_a=hold_id1_a;
run;

proc transpose data=need2 out=want (drop=_:);
  by ID_combined;
  var Name;
run;

data want (drop=col:);
  set want;
  name_combined=catx(' ',of col:);
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;</description>
      <pubDate>Tue, 21 Feb 2017 22:31:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334646#M272257</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-02-21T22:31:56Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334796#M272258</link>
      <description>&lt;P&gt;I think you want&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;To form a group, identified by ID1_A,&amp;nbsp;of all the ID2_B's that are linked to&amp;nbsp;that ID1_A,&amp;nbsp;but only if the ID2_B has not been already linked with an earlier ID1_A.&lt;/LI&gt;
&lt;LI&gt;For that group of ID2_B's, get a list of all unique names to assoicate with the group identifier (ID1_A):&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
   input ID1_A ID2_B Name :$8.;
datalines;
1 1 alpha 
1 2 bravo 
1 3 charlie 
2 2 bravo 
2 3 delta 
3 4 echo 
run;

data need (keep=id1_a name);
  set have;

  if _n_=1 then do;
    declare hash names();  /* Running table of names encountered*/
      names.definekey('name');
      names.definedone();

    declare hash b_to_a(); /* Map from ID2_B to first linked ID1_A*/
      b_to_a.definekey('id2_b');
      b_to_a.definedata('id1_a');
      b_to_a.definedone();
  end;

  rc=names.find();
  if rc=0 then delete;

  /* Only new names get to this part*/
  rc=names.add();                /* Add it to the table of names */
  rc=b_to_a.find();              /* Find previously associated ID1_a if any*/
  if rc^=0 then rc=b_to_a.add(); /*Add new ID2_B link if not already there */
run;

proc sort; by id_1a;run;

data want;
  set need;
  by id1_a;

  length name_list $200;
  retain name_list;

  if  first.id1_a then name_list=name;
  else name_list=catx(' ',name_list,name);
  if last.id1_a ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The idea here is to maintain a hash lookup table linking ID2_B to it's first linked ID1_A, and only that ID1_A.&amp;nbsp; Then it's easy to make a dataset of ID1_A and each corresponding name.&amp;nbsp; Sort them and compile into a list.&lt;/P&gt;</description>
      <pubDate>Tue, 21 Feb 2017 22:23:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334796#M272258</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2017-02-21T22:23:44Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334843#M272259</link>
      <description>&lt;P&gt;It is really really not easy. After got the result (final_want table), it is easy to get the ID1_A you want .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data x;
   input ID1_A ID2_B Name $;
datalines;
1 1 alpha 
1 2 bravo 
1 3 charlie 
2 2 bravo 
2 3 delta 
2 5 xx
2 6 zz
3 4 echo 
4 6 yy
5 11 ee
5 22 rr
6 22 gg
6 44 uu
7 88 ii
7 99 oo
;
run;
data key;
array x{99999} _temporary_;
do i=1 by 1 until(last.id1_a);
 set x;
 by id1_a;
 x{i}=id2_b;
end;

do m=1 to i;
 from=x{m};
 do n=m+1 to i;
  to=x{n};output;
 end;
end;
keep from to;
run;

proc sort data=key out=have nodupkey;
 by 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;
call symputx('n',household);
stop;
run;
%put &amp;amp;n;
data want1;
 if _n_=1 then do;
  if 0 then set want;
  declare hash h(dataset:'want');
  h.definekey('node');
  h.definedata('household');
  h.definedone();
 end;
retain n &amp;amp;n;
set x;
call missing(household);
if h.find(key:id2_b) ne 0 then do;n+1;household=n;end;
keep name household;
run;
proc sort data=want1 out=want2;
 by household;
run;
data final_want;
length want $ 200;
do until(last.household);
 set want2;
 by household;
 want=catx(' ',want,name);
end;
drop household name;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 22 Feb 2017 05:13:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/334843#M272259</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-02-22T05:13:43Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/335072#M272260</link>
      <description>&lt;P&gt;That does work! Thank you!&lt;/P&gt;&lt;P&gt;Do you know how you could make it into kind of a decoder key, so that you would know that IDA equals the following IDBs and IDAs that were clustered into that group? For instance with your data input it would become:&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Grouped ID&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Wed, 22 Feb 2017 18:56:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/335072#M272260</guid>
      <dc:creator>jhzsquared</dc:creator>
      <dc:date>2017-02-22T18:56:15Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/335075#M272261</link>
      <description>&lt;P&gt;I think you have to more clearly describe what you want. Might just need to create a format. However, I'd pose the question as a new thread to increase the number of people responding.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;</description>
      <pubDate>Wed, 22 Feb 2017 19:03:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/335075#M272261</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-02-22T19:03:58Z</dc:date>
    </item>
    <item>
      <title>Re: Combine rows of data with various connections across two columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/335079#M272262</link>
      <description>&lt;P&gt;This is a good task to take advantage of the default attributes of hash object (hash table).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The data step below&amp;nbsp;declares a&amp;nbsp;hash table with 2 variables (ID1_A and ID2_B), keyed on ID1_A.&amp;nbsp; Because the default mode of hash tables is to keep only one item (i.e. one row) per key (one per ID2_B in your case), and that one item defaults to&amp;nbsp;the first one encountered, you can just output the hash object to a sas dataset to get what you want, namely each ID2_B and the earliest associated ID1A.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data _null_;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; declare hash h (dataset:'have (keep=id1_a id2_b)');&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definekey('id2_b');&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.definedata(all:'Y');&lt;/P&gt;
&lt;P&gt;&amp;nbsp; rc=h.output(dataset:'decoder');&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sort data=decoder;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; by id1_a id2_b;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Wed, 22 Feb 2017 19:15:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Combine-rows-of-data-with-various-connections-across-two-columns/m-p/335079#M272262</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2017-02-22T19:15:28Z</dc:date>
    </item>
  </channel>
</rss>

