<?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: Re-mapping in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499055#M132747</link>
    <description>&lt;P&gt;OK. This is what you are looking for ?&lt;/P&gt;
&lt;P&gt;&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 from $ to $;
datalines;
AA	David
AA	Winnie
AA	Tom
AA	Daisy
BB	David
BB	Peter
CC	Mary
CC	Peter
CC	Tony
CC	Apple
DD	Lemon
DD	Sky
EE	Cara
EE	Peter
EE	Susan
FF	Mark
GG	Luck
HH	Leon
;

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;

proc sql;
create table unique as
 select * from have
  group by from
   having count(*)=1;

create table final_want as
 select *
  from want where node not in (select from from unique);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 26 Sep 2018 12:56:02 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2018-09-26T12:56:02Z</dc:date>
    <item>
      <title>Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/497236#M131721</link>
      <description>&lt;P&gt;I want to use the Common Key to form a new group. This task was very complicated for me and hope anyone can help me to solve it.&lt;/P&gt;&lt;P&gt;If there is a common key then I want to assign a new group name and group it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Data Source&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Company&lt;/TD&gt;&lt;TD&gt;Employee&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;David&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;Winnie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;Tom&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;Daisy&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BB&lt;/TD&gt;&lt;TD&gt;David&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BB&lt;/TD&gt;&lt;TD&gt;Peter&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;Mary&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;Peter&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;Tony&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;Apple&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DD&lt;/TD&gt;&lt;TD&gt;Lemon&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DD&lt;/TD&gt;&lt;TD&gt;Sky&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EE&lt;/TD&gt;&lt;TD&gt;Cara&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EE&lt;/TD&gt;&lt;TD&gt;Peter&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;EE&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;TD&gt;Susan&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;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;U&gt;Expected Output File Format&lt;/U&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;ID&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;New_Grouping&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BB&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EE&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;David&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Winnie&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Tom&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Daisy&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Peter&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mary&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Tony&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Apple&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Cara&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Susan&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DD&lt;/TD&gt;&lt;TD&gt;GP02&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Lemon&lt;/TD&gt;&lt;TD&gt;GP02&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sky&lt;/TD&gt;&lt;TD&gt;GP02&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Thu, 20 Sep 2018 03:45:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/497236#M131721</guid>
      <dc:creator>New_SAS_user76</dc:creator>
      <dc:date>2018-09-20T03:45:15Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/497249#M131730</link>
      <description>&lt;P&gt;You may use my general purpose subGraphs macro (attached)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Company $ Employee $;
datalines;
AA David 
AA Winnie 
AA Tom 
AA Daisy 
BB David 
BB Peter 
CC Mary 
CC Peter 
CC Tony 
CC Apple 
DD Lemon 
DD Sky 
EE Cara 
EE Peter 
EE Susan 
;

data arcs;
length from to $12;
do until(last.company);
    set have; by company notsorted;
    to = Employee;
    if not missing(from) then output;
    from = to;
    end;
keep from to;
run;

%include "&amp;amp;sasforum.\subGraphsmacro.sas";

%subgraphs(arcs, out=groups);

proc sql;
create table haveGroups as
select a.*, b.clust
from have as a inner join groups as b on a.employee=b.node
order by clust;
quit;

data fullGroups;
set haveGroups;
grouping = cats("GP",clust);
id = company; output;
id = employee; output;
keep id grouping;
run;

proc sort data=fullGroups out=want nodupkey; by grouping id; run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Sep 2018 04:40:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/497249#M131730</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-09-20T04:40:55Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/497343#M131791</link>
      <description>&lt;P&gt;Hash Table could get you faster.&lt;/P&gt;
&lt;P&gt;&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 from $ to $;
datalines;
AA David 
AA Winnie 
AA Tom 
AA Daisy 
BB David 
BB Peter 
CC Mary 
CC Peter 
CC Tony 
CC Apple 
DD Lemon 
DD Sky 
EE Cara 
EE Peter 
EE Susan 
;

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;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 20 Sep 2018 12:56:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/497343#M131791</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-09-20T12:56:35Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/498968#M132707</link>
      <description>&lt;P&gt;Thanks for your help! You help me a lot!&lt;/P&gt;&lt;P&gt;But I still have one question, would you please explore! Maybe my question was not clear before: Let me explain details again, I have added Company FF to HH. If the Company is unique then I would like to assign it a new group no. but now all unique companies which group in one group.&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Data Source&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Company&lt;/TD&gt;&lt;TD&gt;Employee&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;David&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;Winnie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;Tom&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;Daisy&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BB&lt;/TD&gt;&lt;TD&gt;David&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BB&lt;/TD&gt;&lt;TD&gt;Peter&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;Mary&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;Peter&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;Tony&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;Apple&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DD&lt;/TD&gt;&lt;TD&gt;Lemon&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DD&lt;/TD&gt;&lt;TD&gt;Sky&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EE&lt;/TD&gt;&lt;TD&gt;Cara&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EE&lt;/TD&gt;&lt;TD&gt;Peter&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EE&lt;/TD&gt;&lt;TD&gt;Susan&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;FF&lt;/TD&gt;&lt;TD&gt;Mark&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;GG&lt;/TD&gt;&lt;TD&gt;Luck&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;HH&lt;/TD&gt;&lt;TD&gt;Leon&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;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;U&gt;Expected Output File Format&lt;/U&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;New_Grouping&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AA&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BB&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;CC&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EE&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;David&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Winnie&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Tom&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Daisy&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Peter&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mary&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Tony&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Apple&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Cara&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Susan&lt;/TD&gt;&lt;TD&gt;GP01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DD&lt;/TD&gt;&lt;TD&gt;GP02&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Lemon&lt;/TD&gt;&lt;TD&gt;GP02&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sky&lt;/TD&gt;&lt;TD&gt;GP02&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mark&lt;/TD&gt;&lt;TD&gt;GP03&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Luck&lt;/TD&gt;&lt;TD&gt;GP04&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Leon&lt;/TD&gt;&lt;TD&gt;GP05&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Wed, 26 Sep 2018 06:53:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/498968#M132707</guid>
      <dc:creator>New_SAS_user76</dc:creator>
      <dc:date>2018-09-26T06:53:46Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/498991#M132724</link>
      <description>&lt;P&gt;Hi Thanks for your solution!&lt;/P&gt;&lt;P&gt;But the output was not my expected. Maybe my question was not clear!&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>Wed, 26 Sep 2018 08:25:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/498991#M132724</guid>
      <dc:creator>New_SAS_user76</dc:creator>
      <dc:date>2018-09-26T08:25:56Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/498996#M132726</link>
      <description>&lt;P&gt;When I run the below program then I found the record which is unique will be disappear!&lt;/P&gt;&lt;P&gt;I want to keep all the record even unique or duplicate! How to amend it? Thanks!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; arcs&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token function"&gt;length&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; to &lt;SPAN class="token punctuation"&gt;$&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;12&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;do until&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;last&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;company&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; &lt;SPAN class="token statement"&gt;by&lt;/SPAN&gt; company notsorted&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; to &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; Employee&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;not&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;missing&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; output&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; to&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token keyword"&gt;keep&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt; to&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 26 Sep 2018 09:27:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/498996#M132726</guid>
      <dc:creator>New_SAS_user76</dc:creator>
      <dc:date>2018-09-26T09:27:03Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499053#M132746</link>
      <description>&lt;P&gt;OK. The following is what you are looking for ?&lt;/P&gt;
&lt;P&gt;&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 from $ to $;
datalines;
AA	David
AA	Winnie
AA	Tom
AA	Daisy
BB	David
BB	Peter
CC	Mary
CC	Peter
CC	Tony
CC	Apple
DD	Lemon
DD	Sky
EE	Cara
EE	Peter
EE	Susan
FF	Mark
GG	Luck
HH	Leon
;

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;

proc sql;
create table unique as
 select * from have
  group by from
   having count(*)=1;

create table final_want as
 select *
  from want where node not in (select from from unique);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 26 Sep 2018 12:54:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499053#M132746</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-09-26T12:54:36Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499055#M132747</link>
      <description>&lt;P&gt;OK. This is what you are looking for ?&lt;/P&gt;
&lt;P&gt;&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 from $ to $;
datalines;
AA	David
AA	Winnie
AA	Tom
AA	Daisy
BB	David
BB	Peter
CC	Mary
CC	Peter
CC	Tony
CC	Apple
DD	Lemon
DD	Sky
EE	Cara
EE	Peter
EE	Susan
FF	Mark
GG	Luck
HH	Leon
;

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;

proc sql;
create table unique as
 select * from have
  group by from
   having count(*)=1;

create table final_want as
 select *
  from want where node not in (select from from unique);
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 26 Sep 2018 12:56:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499055#M132747</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-09-26T12:56:02Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499342#M132860</link>
      <description>&lt;P&gt;Sorry I can't get the output! Would you please tell me which variable should I define "Company" and "Employee"?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; full&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have end&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;last&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; _n_ &lt;SPAN class="token operator"&gt;eq&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; do&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token keyword"&gt;declare&lt;/SPAN&gt; hash h&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;definekey&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'node'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;definedata&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'node'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;definedone&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; end&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; output&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; node&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;replace&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;to&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; to&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;node&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; output&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; node&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;from&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;replace&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; last &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; h&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;output&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;dataset:&lt;SPAN class="token string"&gt;'node'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp; &lt;SPAN class="token keyword"&gt;drop&lt;/SPAN&gt; node&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 27 Sep 2018 01:51:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499342#M132860</guid>
      <dc:creator>New_SAS_user76</dc:creator>
      <dc:date>2018-09-27T01:51:02Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499363#M132870</link>
      <description>&lt;P&gt;Slight modif takes care of single cases&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Company $ Employee $;
datalines;
AA David 
AA Winnie 
AA Tom 
AA Daisy 
BB David 
BB Peter 
CC Mary 
CC Peter 
CC Tony 
CC Apple 
DD Lemon 
DD Sky 
EE Cara 
EE Peter 
EE Susan 
FF Mark 
GG Luck 
HH Leon 
;

data arcs;
length from to $12;
do i = 0 by 1 until(last.company);
    set have; by company notsorted;
    to = Employee;
    if not missing(from) then output;
    from = to;
    end;
if not i then output;
keep from to;
run;

%include "&amp;amp;sasforum.\subGraphsmacro.sas";

%subgraphs(arcs, out=groups);

proc sql;
create table haveGroups as
select a.*, b.clust
from have as a inner join groups as b on a.employee=b.node
order by clust;
quit;

data fullGroups;
set haveGroups;
grouping = cats("GP",clust);
id = company; output;
id = employee; output;
keep id grouping;
run;

proc sort data=fullGroups out=want nodupkey; by grouping id; run;

proc print data=want noobs; run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;                                 grouping    id

                                   GP1       AA
                                   GP1       Apple
                                   GP1       BB
                                   GP1       CC
                                   GP1       Cara
                                   GP1       Daisy
                                   GP1       David
                                   GP1       EE
                                   GP1       Mary
                                   GP1       Peter
                                   GP1       Susan
                                   GP1       Tom
                                   GP1       Tony
                                   GP1       Winnie
                                   GP11      FF
                                   GP11      Mark
                                   GP12      GG
                                   GP12      Luck
                                   GP13      HH
                                   GP13      Leon
                                   GP8       DD
                                   GP8       Lemon
                                   GP8       Sky
&lt;/PRE&gt;</description>
      <pubDate>Thu, 27 Sep 2018 04:28:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499363#M132870</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-09-27T04:28:02Z</dc:date>
    </item>
    <item>
      <title>Re: Re-mapping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499457#M132922</link>
      <description>&lt;PRE&gt;
Rename your variables into FROM and TO. 
And running the code after it.

data have(rename=(Company=from  Employee=to));
input Company $ Employee $;
datalines;
AA	David
AA	Winnie


&lt;/PRE&gt;</description>
      <pubDate>Thu, 27 Sep 2018 12:21:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Re-mapping/m-p/499457#M132922</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-09-27T12:21:22Z</dc:date>
    </item>
  </channel>
</rss>

