<?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: How to make peer groups based on mutually same analyst code in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588314#M168117</link>
    <description>&lt;P&gt;Sure, will do it after a meeting. : )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
    <pubDate>Thu, 12 Sep 2019 16:38:44 GMT</pubDate>
    <dc:creator>Lipty</dc:creator>
    <dc:date>2019-09-12T16:38:44Z</dc:date>
    <item>
      <title>How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588026#M167998</link>
      <description>&lt;P&gt;Thank you very much for taking time to read this post. I have the following data set:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FirmID&lt;/TD&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;AnalystCode&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;PAMP&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NFLX&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NZKA&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1048&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NFLX&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1048&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1048&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;PAMP&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NFLX&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NZKA&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;GTW&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBRY&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBRY&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1322&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1322&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;GTW&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBRY&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBRY&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1322&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1322&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Every year, once the firms have &lt;STRONG&gt;at least 3 same&amp;nbsp;&lt;/STRONG&gt;AnalystCode, they will be classified as one group. So my desired table should be like the following one:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FirmID&lt;/TD&gt;&lt;TD&gt;year&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Group&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NFLX&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can anyone help? Thank you very much. : )&lt;/P&gt;</description>
      <pubDate>Wed, 11 Sep 2019 20:54:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588026#M167998</guid>
      <dc:creator>Lipty</dc:creator>
      <dc:date>2019-09-11T20:54:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588046#M168005</link>
      <description>&lt;P&gt;please try&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data=have;
by firmid year;
run;

proc sql;
create table want as select count(year) as cnt,firmid,year from have group by firmid,year having cnt=3;
create table want2 as select count(distinct year) as cnt,firmid from have group by firmid ;
quit;

data all;
merge want(in=a drop=cnt) want2(in=b);
by firmid ;
if a and b;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 11 Sep 2019 22:04:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588046#M168005</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2019-09-11T22:04:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588047#M168006</link>
      <description>&lt;P&gt;Can a firm belong to many groups for a given year?&lt;/P&gt;
&lt;P&gt;If firm A shares 3 analysts with firm B and 3 other analysts with firm C, but firm B and C have no analysts in common, how are they grouped?&lt;/P&gt;</description>
      <pubDate>Wed, 11 Sep 2019 22:10:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588047#M168006</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-09-11T22:10:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588085#M168019</link>
      <description>&lt;P&gt;Try this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data work.have;
input FirmID $ year AnalystCode;
datalines;
PAMP 2001 1047
AMZN 2001 1047
NFLX 2001 1047
RIM 2001 1047
NZKA 2001 1047
AMZN 2001 1048
NFLX 2001 1048
RIM 2001 1048
PAMP 2001 1648
AMZN 2001 1648
NFLX 2001 1648
RIM 2001 1648
NZKA 2001 1648
GTW 2001 967
BBRY 2001 967
NOK 2001 967
AEOK 2001 967
BBRY 2001 816
NOK 2001 816
AEOK 2001 816
NOK 2001 1322
AEOK 2001 1322
GTW 2002 967
BBRY 2002 967
NOK 2002 967
AEOK 2002 967
BBRY 2002 816
NOK 2002 816
AEOK 2002 816
NOK 2002 1322
AEOK 2002 1322
;

proc sql;
create table links as
select
	a.firmId as from, b.firmId as to, a.year
from
	have as a inner join have as b on a.year=b.year and a.analystCode=b.analystCode and a.firmId&amp;lt;b.firmId
group by a.firmId, b.firmId, a.year
having count(*) &amp;gt;=3;
quit;

%macro optnet(year);
proc optnet data_links=links graph_direction=undirected out_nodes=work.nodes_&amp;amp;year.;
where year=&amp;amp;year.;
concomp;
run;
%mend;

%optnet(2001);
%optnet(2002);

data want;
set nodes_: indsname=dsn;
year = input(scan(dsn,2,"_"),best.);
rename node=firmId concomp=group;
run;

proc print data=want noobs; run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Sep 2019 03:30:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588085#M168019</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-09-12T03:30:04Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588183#M168069</link>
      <description>&lt;P&gt;I love this kind of question . Put me to the limit .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data work.have;
input FirmID $ year AnalystCode;
flag=1;
datalines;
PAMP 2001 1047
AMZN 2001 1047
NFLX 2001 1047
RIM 2001 1047
NZKA 2001 1047
AMZN 2001 1048
NFLX 2001 1048
RIM 2001 1048
PAMP 2001 1648
AMZN 2001 1648
NFLX 2001 1648
RIM 2001 1648
NZKA 2001 1648
GTW 2001 967
BBRY 2001 967
NOK 2001 967
AEOK 2001 967
BBRY 2001 816
NOK 2001 816
AEOK 2001 816
NOK 2001 1322
AEOK 2001 1322
GTW 2002 967
BBRY 2002 967
NOK 2002 967
AEOK 2002 967
BBRY 2002 816
NOK 2002 816
AEOK 2002 816
NOK 2002 1322
AEOK 2002 1322
;
proc sort data=have out=temp;
by year AnalystCode;
run;
proc transpose data=temp out=temp1(drop=_name_);
by year AnalystCode;
id FirmID;
var flag;
run;
proc stdize data=temp1 out=temp2 missing=0 reponly;
run;
proc sql noprint;
select distinct cats('_',FirmID) into : Firm separated by ' ' from have;
select distinct cats('_',FirmID,'=cats(_',FirmId,',',FirmID,')')
  into : concat separated by ';'
 from have;
quit;
data temp3;
length &amp;amp;Firm $ 200;
 do until(last.year);
  set temp2;
  by year;
  &amp;amp;concat ;
 end;
 keep year _: ;
run;
data temp4;
 set temp3;
 array x{*} $ _: ;
 do i=1 to dim(x)-1;
  if countc(x{i},'1')&amp;gt;2 then do;
   do j=i+1 to dim(x);
       if x{i}=x{j}  then do;
	     value=x{i};
         vname=vname(x{i});output;
	     vname=vname(x{j});output;
	   end;
	 end;
   end;
 end;
keep year value vname;
run;
proc sort data=temp4 out=temp5 nodupkey;
by year value vname ;
run;
data want;
 set temp5;
 by year value;
 if first.year then group=0;
 group+first.value;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Sep 2019 12:12:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588183#M168069</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-09-12T12:12:07Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588189#M168072</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    declare hash HoH(ordered:'Y');
    HoH.definekey ('year', 'FirmID');
    HoH.definedata('h', 'FirmID', 'year');
    HoH.definedone();
    declare hiter HoHiter("HoH");

    declare hash g();
    g.definekey('year');
    g.definedata('Group');
    g.definedone();

    declare hash h;

    do until (lr);
      set have end=lr;

      if g.check() ne 0 then do;
          Group+1;g.add();
      end;

      if HoH.find() ne 0 then do;
         h=_new_ hash();
         h.definekey('FirmID', 'year', 'AnalystCode');
         h.definedone();
         HoH.add();
      end;

      h.replace();
    end;

    do while(HoHiter.next() = 0);
        if h.num_items ge 3 then do;
            rc=g.find();
            output;
        end;
    end;

    keep FirmID year Group;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Sep 2019 12:36:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588189#M168072</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-09-12T12:36:47Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588274#M168102</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much for your time,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;&amp;nbsp;I checked my original data which includes more than 200,000 observations. The case mentioned by&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;&amp;nbsp;does exist.&amp;nbsp;&lt;SPAN&gt;If firm A shares 3 analysts with firm B and 3 other analysts with firm C, but firm B and C have no analysts in common, B and C cannot be made in one group. Only when they have common and mutually same analyst code, and from the same industry, they can be grouped together.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp; Sorry for missing one more piece of information. There is one more variable of "industry".&amp;nbsp;Once the firms have&amp;nbsp;&lt;STRONG&gt;at least 3 same&amp;nbsp;&lt;/STRONG&gt;AnalystCode and are from the same industry, they will fall in one group. This can eliminate most of the cases mentioned by&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;&amp;nbsp;.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Could you please help me with the additional piece of information. Thanks again for your help.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Sep 2019 14:47:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588274#M168102</guid>
      <dc:creator>Lipty</dc:creator>
      <dc:date>2019-09-12T14:47:22Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588277#M168103</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/179036"&gt;@Lipty&lt;/a&gt;&amp;nbsp;can you update the sample data and the desired result and take this into account?&lt;/P&gt;</description>
      <pubDate>Thu, 12 Sep 2019 14:51:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588277#M168103</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-09-12T14:51:38Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588314#M168117</link>
      <description>&lt;P&gt;Sure, will do it after a meeting. : )&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Thu, 12 Sep 2019 16:38:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588314#M168117</guid>
      <dc:creator>Lipty</dc:creator>
      <dc:date>2019-09-12T16:38:44Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588351#M168132</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sorry for missing one piece of information. I add one more variable "IndustryCode" to the sample data.&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&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;FirmID&lt;/TD&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;AnalystCode&lt;/TD&gt;&lt;TD&gt;IndustryCode&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;PAMP&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NFLX&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;TD&gt;37&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NZKA&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1047&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1048&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NFLX&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1048&lt;/TD&gt;&lt;TD&gt;37&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1048&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;PAMP&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NFLX&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;TD&gt;37&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NZKA&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1648&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;GTW&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBRY&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBRY&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1322&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1322&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;GTW&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBRY&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;967&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;BBRY&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;816&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1322&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1322&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Once the firms have&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;at least 3 same&amp;nbsp;&lt;/STRONG&gt;&lt;SPAN&gt;AnalystCode and are from the same industry (IndustryCode), they will fall in one group.&amp;nbsp;I desired table is as follows:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FirmID&lt;/TD&gt;&lt;TD&gt;year&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Group&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;IndstutryCode&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much for your time.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Sep 2019 19:24:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588351#M168132</guid>
      <dc:creator>Lipty</dc:creator>
      <dc:date>2019-09-12T19:24:21Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588363#M168136</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/179036"&gt;@Lipty&lt;/a&gt; , please try the below code , it is generating the expected output&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input FirmID$ year AnalystCode IndustryCode;
cards;
PAMP 2001 1047 36
AMZN 2001 1047 36
NFLX 2001 1047 37
RIM	 2001 1047 36
NZKA 2001 1047 36
AMZN 2001 1048 36
NFLX 2001 1048 37
RIM	 2001 1048 36
PAMP 2001 1648 36
AMZN 2001 1648 36
NFLX 2001 1648 37
RIM	 2001 1648 36
NZKA 2001 1648 36
GTW	 2001 967  23
BBRY 2001 967  23
NOK	 2001 967  23
AEOK 2001 967  23
BBRY 2001 816  23
NOK	 2001 816  23
AEOK 2001 816  23
NOK	 2001 1322 23
AEOK 2001 1322 23
GTW	 2002 967  23
BBRY 2002 967  23
NOK	 2002 967  23
AEOK 2002 967  23
BBRY 2002 816  23
NOK	 2002 816  23
AEOK 2002 816  23
NOK	 2002 1322 23
AEOK 2002 1322 23
;

proc sort data=have;
by firmid year;
run;

proc sql;
create table want as select count(year) as cnt,firmid,year,IndustryCode from have group by firmid,year,IndustryCode having cnt=3;
create table want2 as select count(distinct year) as cnt,firmid from have group by firmid ;
quit;

data all;
merge want(in=a drop=cnt) want2(in=b);
by firmid ;
if a and b;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Sep 2019 19:54:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588363#M168136</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2019-09-12T19:54:58Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588400#M168149</link>
      <description>&lt;P&gt;Consider the A-B-C case described before with links A-B and A-C but no B-C link. My previous code would put all three firms A-B-C in the same group. But if firms without a link cannot belong to the same group then there must be two groups, A-B and A-C. This new code does that. In graph theory terms, the previous code found &lt;EM&gt;connected components&lt;/EM&gt;, the new one finds &lt;EM&gt;cliques&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data work.have;
input FirmID $ year AnalystCode IndustryCode;
datalines;
PAMP 2001 1047 36
AMZN 2001 1047 36
NFLX 2001 1047 37
RIM 2001 1047 36
NZKA 2001 1047 36
AMZN 2001 1048 36
NFLX 2001 1048 37
RIM 2001 1048 36
PAMP 2001 1648 36
AMZN 2001 1648 36
NFLX 2001 1648 37
RIM 2001 1648 36
NZKA 2001 1648 36
GTW 2001 967 23
BBRY 2001 967 23
NOK 2001 967 23
AEOK 2001 967 23
BBRY 2001 816 23
NOK 2001 816 23
AEOK 2001 816 23
NOK 2001 1322 23
AEOK 2001 1322 23
GTW 2002 967 23
BBRY 2002 967 23
NOK 2002 967 23
AEOK 2002 967 23
BBRY 2002 816 23
NOK 2002 816 23
AEOK 2002 816 23
NOK 2002 1322 23
AEOK 2002 1322 23
;

proc sql;
create table links as
select
	a.firmId as from, b.firmId as to, a.year, a.IndustryCode
from
	have as a inner join have as b on a.year=b.year and 
	a.analystCode=b.analystCode and a.IndustryCode=b.IndustryCode and a.firmId&amp;lt;b.firmId
group by a.firmId, b.firmId, a.year, a.IndustryCode
having count(*) &amp;gt;=3;
quit;

%macro optnet(year);
proc optnet data_links=links graph_direction=undirected;
where year=&amp;amp;year.;
clique out=work.nodes_&amp;amp;year.;
run;
%mend;

%optnet(2001);
%optnet(2002);

data want;
set nodes_: indsname=dsn;
year = input(scan(dsn,2,"_"),best.);
rename node=firmId clique=group;
run;

proc print data=want noobs; run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 12 Sep 2019 22:54:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588400#M168149</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-09-12T22:54:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588439#M168178</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    declare hash HoH(ordered:'Y');
    HoH.definekey ('year', 'FirmID', 'IndustryCode');
    HoH.definedata('h', 'FirmID', 'year', 'IndustryCode');
    HoH.definedone();
    declare hiter HoHiter("HoH");

    declare hash g();
    g.definekey('year');
    g.definedata('Group');
    g.definedone();

    declare hash h;

    do until (lr);
      set have end=lr;

      if g.check() ne 0 then do;
          Group+1;g.add();
      end;

      if HoH.find() ne 0 then do;
         h=_new_ hash();
         h.definekey('FirmID', 'year', 'AnalystCode', 'IndustryCode');
         h.definedone();
         HoH.add();
      end;

      h.replace();
    end;

    do while(HoHiter.next() = 0);
        if h.num_items ge 3 then do;
            rc=g.find();
            output;
        end;
    end;

    keep FirmID year Group IndustryCode;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;FirmID  year  IndustryCode Group
AEOK    2001  23           1
AMZN    2001  36           1
NFLX    2001  37           1
NOK     2001  23           1
RIM     2001  36           1
AEOK    2002  23           2
NOK     2002  23           2 &lt;/PRE&gt;</description>
      <pubDate>Fri, 13 Sep 2019 06:15:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588439#M168178</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-09-13T06:15:59Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588476#M168192</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input FirmID$ year AnalystCode IndustryCode;
flag=1;
cards;
PAMP 2001 1047 36
AMZN 2001 1047 36
NFLX 2001 1047 37
RIM	 2001 1047 36
NZKA 2001 1047 36
AMZN 2001 1048 36
NFLX 2001 1048 37
RIM	 2001 1048 36
PAMP 2001 1648 36
AMZN 2001 1648 36
NFLX 2001 1648 37
RIM	 2001 1648 36
NZKA 2001 1648 36
GTW	 2001 967  23
BBRY 2001 967  23
NOK	 2001 967  23
AEOK 2001 967  23
BBRY 2001 816  23
NOK	 2001 816  23
AEOK 2001 816  23
NOK	 2001 1322 23
AEOK 2001 1322 23
GTW	 2002 967  23
BBRY 2002 967  23
NOK	 2002 967  23
AEOK 2002 967  23
BBRY 2002 816  23
NOK	 2002 816  23
AEOK 2002 816  23
NOK	 2002 1322 23
AEOK 2002 1322 23
;
proc sort data=have out=temp;
by year IndustryCode AnalystCode;
run;
proc transpose data=temp out=temp1(drop=_name_);
by year IndustryCode AnalystCode;
id FirmID;
var flag;
run;
proc stdize data=temp1 out=temp2 missing=0 reponly;
run;
proc sql noprint;
select distinct cats('_',FirmID) into : Firm separated by ' ' from have;
select distinct cats('_',FirmID,'=cats(_',FirmId,',',FirmID,')')
  into : concat separated by ';'
 from have;
quit;
data temp3;
length &amp;amp;Firm $ 200;
 do until(last.IndustryCode);
  set temp2 ;
  by year IndustryCode;
  &amp;amp;concat ;
 end;
 keep year IndustryCode _: ;
run;
data temp4;
 set temp3;
 array x{*} $ _: ;
 do i=1 to dim(x)-1;
  if countc(x{i},'1')&amp;gt;2 then do;
   do j=i+1 to dim(x);
       if x{i}=x{j}  then do;
	     value=x{i};
         vname=vname(x{i});output;
	     vname=vname(x{j});output;
	   end;
	 end;
   end;
 end;
keep year IndustryCode value vname;
run;
proc sort data=temp4 out=temp5 nodupkey;
by year IndustryCode value vname ;
run;
data want;
 set temp5;
 by year IndustryCode;
 if first.year then group=0;
 group+first.IndustryCode;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 13 Sep 2019 11:23:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588476#M168192</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2019-09-13T11:23:34Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588579#M168226</link>
      <description>&lt;P&gt;Here is a more efficient solution than my previous try:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table links as
select
	catx("_",a.year,a.IndustryCode,a.firmId) as from, 
	catx("_",a.year,a.IndustryCode,b.firmId) as to
from
	have as a inner join 
	have as b on a.year=b.year and 
		a.analystCode=b.analystCode and a.IndustryCode=b.IndustryCode and a.firmId&amp;lt;b.firmId
group by a.firmId, b.firmId, a.year, a.IndustryCode
having count(*) &amp;gt;=3;
quit;

proc optnet data_links=links graph_direction=undirected;
clique out=work.nodes;
run;

data want;
set nodes;
length firmId $4;
year = input(scan(node, 1, "_"),best.);
IndustryCode = input(scan(node, 2, "_"), best.);
firmId = scan(node, 3, "_");
rename clique=group;
drop node;
run;

proc print data=want noobs; run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;group 	firmId 	year 	IndustryCode
1 	AEOK 	2001 	23
1 	NOK 	2001 	23
2 	AEOK 	2002 	23
2 	NOK 	2002 	23
3 	AMZN 	2001 	36
3 	RIM 	2001 	36&lt;/PRE&gt;</description>
      <pubDate>Fri, 13 Sep 2019 16:16:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588579#M168226</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-09-13T16:16:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588665#M168269</link>
      <description>&lt;P&gt;Thank you very much,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will try it. The desired table is a little different from what I have listed. &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;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FirmID&lt;/TD&gt;&lt;TD&gt;year&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Group&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;IndstutryCode&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 13 Sep 2019 21:42:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588665#M168269</guid>
      <dc:creator>Lipty</dc:creator>
      <dc:date>2019-09-13T21:42:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588666#M168270</link>
      <description>&lt;P&gt;Thank you very much,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;&amp;nbsp;But my desired table is as follows:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FirmID&lt;/TD&gt;&lt;TD&gt;year&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Group&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;IndstutryCode&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AMZN&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RIM&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;36&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2001&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;NOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;AEOK&lt;/TD&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;23&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;37 should not be included and NOK and AEOK should be group 2. : )&lt;/P&gt;</description>
      <pubDate>Fri, 13 Sep 2019 21:44:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588666#M168270</guid>
      <dc:creator>Lipty</dc:creator>
      <dc:date>2019-09-13T21:44:16Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588667#M168271</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12151"&gt;@Jagadishkatam&lt;/a&gt;&amp;nbsp;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will try it. : )&lt;/P&gt;</description>
      <pubDate>Fri, 13 Sep 2019 21:45:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588667#M168271</guid>
      <dc:creator>Lipty</dc:creator>
      <dc:date>2019-09-13T21:45:11Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588668#M168272</link>
      <description>&lt;P&gt;The missing reordering step is left as an exercise &lt;img id="smileywink" class="emoticon emoticon-smileywink" src="https://communities.sas.com/i/smilies/16x16_smiley-wink.png" alt="Smiley Wink" title="Smiley Wink" /&gt; !&lt;/P&gt;</description>
      <pubDate>Fri, 13 Sep 2019 21:45:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588668#M168272</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2019-09-13T21:45:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to make peer groups based on mutually same analyst code</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588704#M168286</link>
      <description>&lt;P&gt;Please explain why this obs&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;NFLX  2001  37  1&lt;/PRE&gt;
&lt;P&gt;should not be in the desired output?&lt;/P&gt;</description>
      <pubDate>Sat, 14 Sep 2019 07:20:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-make-peer-groups-based-on-mutually-same-analyst-code/m-p/588704#M168286</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-09-14T07:20:48Z</dc:date>
    </item>
  </channel>
</rss>

