<?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: Comparing multiple character variables between IDs in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736851#M229643</link>
    <description>&lt;P&gt;My 2 cents.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Should be reasonably fast as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                                                                                                                                                                                                                                                     
  input id (T1-T12) ($) ;                                                                                                                                                                                                                                        
  cards ;                                                                                                                                                                                                                                                       
1	E	A	E	B	A	A	E	A	C	B	E	F
2	F	A	E	F	E	E	E	E	A	E	E	E
3	A	C	C	E	E	E	A	F	D	D	E	F
4	A	F	F	D	B	B	C	A	A	A	C	C
5	B	B	C	C	D	A	A	A	B	E	E	F
;                                     

data want(keep = id id2 same);

   set have;
   id2 = .;
   length same $ 1000;
   same = '';
   array t {*} $ t1  - t12;
   array tt{*} $ tt1 - tt12;

   do i = 1 to dim(tt);
      tt[i] = t[i];
   end;

   if _N_ = 1 then do;
      dcl hash h(dataset : "have(rename = id = id2)", ordered : "Y");
      h.definekey("id2");
      h.definedata("id2");
      do i = 1 to dim(t);
         h.definedata(vname(t[i]));
      end;
      h.definedone();
      dcl hiter hi("h");
   end;

   hi.setcur(key : id);

   do while (hi.next() = 0);
      do i = 1 to dim(t);
         if t[i] = tt[i] then same = catx(',', same, vname(t[i]));
      end;
      output;
   end;

run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sun, 25 Apr 2021 13:42:42 GMT</pubDate>
    <dc:creator>PeterClemmensen</dc:creator>
    <dc:date>2021-04-25T13:42:42Z</dc:date>
    <item>
      <title>Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736825#M229621</link>
      <description>&lt;P&gt;Hello!&lt;/P&gt;&lt;P&gt;Recently I was presented with this kind of data&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                                                                                                                                                                                                                                                     
  input id (T1-T12) ($) ;                                                                                                                                                                                                                                        
  cards ;                                                                                                                                                                                                                                                       
1	E	A	E	B	A	A	E	A	C	B	E	F
2	F	A	E	F	E	E	E	E	A	E	E	E
3	A	C	C	E	E	E	A	F	D	D	E	F
4	A	F	F	D	B	B	C	A	A	A	C	C
5	B	B	C	C	D	A	A	A	B	E	E	F                                                                                                                                                                                                                                                
;                                                                                                                                                                                                                                                               
run ;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Here we have 5 person (animal) with 12 variables describing some its traits. At every trait we can have score from A to F.&lt;/P&gt;&lt;P&gt;This scores can be interpreted also as a string containing all scores.&amp;nbsp;&lt;/P&gt;&lt;P&gt;What would be goal is to compare scores between animals and to say where are they the same.&lt;/P&gt;&lt;P&gt;For example: id1 vs id2 are same at: t2,t3,t7,t11&lt;/P&gt;&lt;P&gt;id1 vs id2 same at: t11,t12&lt;/P&gt;&lt;P&gt;etc..&lt;/P&gt;&lt;P&gt;In original data set I have and will have much more animals.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I appreciate all of inputs!&lt;/P&gt;&lt;P&gt;Cheers!&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 10:56:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736825#M229621</guid>
      <dc:creator>MajaAGR</dc:creator>
      <dc:date>2021-04-25T10:56:25Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736827#M229623</link>
      <description>&lt;P&gt;What does your desired result look like given this example data ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 11:18:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736827#M229623</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-04-25T11:18:21Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736832#M229627</link>
      <description>&lt;P&gt;Well,&lt;/P&gt;&lt;P&gt;I would like to have variable or variables saying which animals are compared, and one variable with locations of differences&lt;/P&gt;&lt;P&gt;Var1 Var2 diff&lt;/P&gt;&lt;P&gt;1 2 t2,t3,t7,t11&lt;/P&gt;&lt;P&gt;2 3 t11,t12&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Or something similar.&amp;nbsp;&lt;/P&gt;&lt;P&gt;it can also be&lt;/P&gt;&lt;P&gt;t1 same in 3 and 4&lt;/P&gt;&lt;P&gt;t2 same in 1 and 2&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 11:55:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736832#M229627</guid>
      <dc:creator>MajaAGR</dc:creator>
      <dc:date>2021-04-25T11:55:51Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736835#M229630</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think this program gives you what you want:&lt;/P&gt;
&lt;P&gt;id = id of animal x&lt;/P&gt;
&lt;P&gt;cid = id of animal y (which is compared to animal x)&lt;/P&gt;
&lt;P&gt;location_of_diff = Traits different for animal x and animal y&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                                                                                                                                                                                                                                                     
  input id (T1-T12) ($) ;                                                                                                                                                                                                                                        
  cards ;                                                                                                                                                                                                                                                       
1	E	A	E	B	A	A	E	A	C	B	E	F
2	F	A	E	F	E	E	E	E	A	E	E	E
3	A	C	C	E	E	E	A	F	D	D	E	F
4	A	F	F	D	B	B	C	A	A	A	C	C
5	B	B	C	C	D	A	A	A	B	E	E	F
;                                                                                                                                                                                                                                                               
run ;

data have1(rename=(id=cid) drop=i T1-T12);
 set have;
 array origT{12} $  T1- T12;
 array copyT{12} $ cT1-cT12;
 do i=1 to dim(origT);
  copyT(i)=origT(i);
 end;
run;

data _NULL_; 
 if 0 then set have1 nobs=count; 
 call symput('numobs',strip(put(count,8.)));
 STOP;
run;
%PUT &amp;amp;=numobs;

data want(drop=j T1-T12 cT1-cT12);
 LENGTH id cid 8 location_of_diff $ 200;
 set have;
 array origT{12} $  T1- T12;
 array copyT{12} $ cT1-cT12;
 array equaT{12} $ eT1-eT12;
 do pointer=1 to &amp;amp;numobs.;
  set have1 point=pointer;
  location_of_diff='';
  do j=1 to dim(origT);
   if copyT(j)=origT(j) then equaT(j)='Y';
   else equaT(j)='N';
   if equaT(j)='N' then location_of_diff=strip(location_of_diff)!!strip(vname(origT(j)));
  end;
  if id ^= cid then output;
 end;
run;
/* end of program */&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Note: if you have 10 000+ animals, it may be worthwhile (performance-wise) to turn the data set have1 into a hash table and doing a&amp;nbsp;Hash Object Table Look-up.&lt;/P&gt;
&lt;P&gt;I haven't put any comments, hoping that you can grasp the code without. If not, tell me!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Koen&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 12:24:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736835#M229630</guid>
      <dc:creator>sbxkoenk</dc:creator>
      <dc:date>2021-04-25T12:24:20Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736837#M229632</link>
      <description>This looks great!&lt;BR /&gt;I will try grasp the code and change it to give me the list of similarities instead of differences.&lt;BR /&gt;Let me test it on a bigger data set and will let you know&lt;BR /&gt;&lt;BR /&gt;Thanks!</description>
      <pubDate>Sun, 25 Apr 2021 12:34:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736837#M229632</guid>
      <dc:creator>MajaAGR</dc:creator>
      <dc:date>2021-04-25T12:34:28Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736839#M229634</link>
      <description>&lt;P&gt;Without issues I changed the code to show same traits instead of different ones.&lt;/P&gt;&lt;P&gt;All works perfectly!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks again!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 12:40:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736839#M229634</guid>
      <dc:creator>MajaAGR</dc:creator>
      <dc:date>2021-04-25T12:40:41Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736841#M229636</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The key is you want to compare a record to all other records in the same dataset. And you want to repeat this for every record (comparing it to all other records).&lt;/P&gt;
&lt;P&gt;That's a kind of Cartesian product.&lt;/P&gt;
&lt;P&gt;There are multiple ways to solve this.&amp;nbsp;Many people do this with PROC SQL.&lt;/P&gt;
&lt;P&gt;I have done it with a data step:&lt;/P&gt;
&lt;P&gt;I take a first record in HAVE and compare it to all records in HAVE1 (HAVE1 is a copy of HAVE with renamed variables).&lt;/P&gt;
&lt;P&gt;Then&amp;nbsp;I take a second record in HAVE and compare it to all records in HAVE1.&lt;/P&gt;
&lt;P&gt;Until I reach the end of file (last record) of HAVE.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Koen&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 12:45:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736841#M229636</guid>
      <dc:creator>sbxkoenk</dc:creator>
      <dc:date>2021-04-25T12:45:21Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736843#M229637</link>
      <description>&lt;P&gt;Do you have SAS/IML ?&lt;/P&gt;
&lt;P&gt;Otherwise, that would cost you many code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                                                                                                                                                                                                                                                     
  input id (T1-T12) ($) ;                                                                                                                                                                                                                                        
  cards ;                                                                                                                                                                                                                                                       
1	E	A	E	B	A	A	E	A	C	B	E	F
2	F	A	E	F	E	E	E	E	A	E	E	E
3	A	C	C	E	E	E	A	F	D	D	E	F
4	A	F	F	D	B	B	C	A	A	A	C	C
5	B	B	C	C	D	A	A	A	B	E	E	F                                                                                                                                                                                                                                                
;                                                                                                                                                                                                                                                               
run ;

proc iml;
use have;
read all var _char_ into t[c=vname];

do i=1 to nrow(t)-1;
 do j=i+1 to nrow(t);
   idx=loc(t[i,] ^= t[j,]) ;
   cat=rowcat(putc(t(vname[idx]),'$8.'));
   var1=var1//i;
   var2=var2//j;
   diff=diff//cat;
 end;
end;
create want var {var1 var2 diff};
append;
close;
quit;

proc print;run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 500px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/58663i34D45BC76E34FAB9/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 12:49:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736843#M229637</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-04-25T12:49:02Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736844#M229638</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                                                                                                                                                                                                                                                     
  input id (T1-T12) ($) ;                                                                                                                                                                                                                                        
  cards ;                                                                                                                                                                                                                                                       
1	E	A	E	B	A	A	E	A	C	B	E	F
2	F	A	E	F	E	E	E	E	A	E	E	E
3	A	C	C	E	E	E	A	F	D	D	E	F
4	A	F	F	D	B	B	C	A	A	A	C	C
5	B	B	C	C	D	A	A	A	B	E	E	F                                                                                                                                                                                                                                                
;                                                                                                                                                                                                                                                               
run ;

proc transpose data=have out=temp;
var t:;
run;

data temp1;
 set temp;
 array c{*} col:;
 do var1=1 to dim(c)-1;
  do var2=var1+1 to dim(c);
    if c{var1} ne c{var2} then output;
  end;
 end;
keep _name_ var1 var2;
run;
proc sort data=temp1 out=temp2;
by var1 var2 _name_;
run;
data want;
 do until(last.var2);
  set temp2;
  by var1 var2;
  length diff $ 400;
  diff=catx(',',diff,_name_);
 end;
 drop _name_;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 25 Apr 2021 12:55:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736844#M229638</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-04-25T12:55:40Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736845#M229639</link>
      <description>This one works well too.&lt;BR /&gt;I have IML and will see if I can go for this solution. However, I need positions where they are the same.</description>
      <pubDate>Sun, 25 Apr 2021 12:57:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736845#M229639</guid>
      <dc:creator>MajaAGR</dc:creator>
      <dc:date>2021-04-25T12:57:30Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736846#M229640</link>
      <description>yes, Cartesian product was the last thing I successfully made from the data. Later I stuck with comparisons, your Y and N. Now all works fine. Actually my data looks a bit different so first I need to transpose and rename and.. but at the end this works! &lt;BR /&gt;</description>
      <pubDate>Sun, 25 Apr 2021 13:00:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736846#M229640</guid>
      <dc:creator>MajaAGR</dc:creator>
      <dc:date>2021-04-25T13:00:39Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736848#M229641</link>
      <description>&lt;P&gt;Same postion is easy too.&lt;/P&gt;
&lt;P&gt;Just change&amp;nbsp;&lt;/P&gt;
&lt;P&gt;idx=loc(t[i,] ^= t[j,]) ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;into&amp;nbsp;&lt;/P&gt;
&lt;P&gt;idx=loc(t[i,] = t[j,]) ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 320px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/58664i37A87CE34A3A9582/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 13:06:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736848#M229641</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-04-25T13:06:05Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736850#M229642</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;Of course. For the data step just change 
    if c{var1} ne c{var2} then output;

into 
    if c{var1} = c{var2} then output;
&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 477px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/58665iB82E4DA0534678C2/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 13:08:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736850#M229642</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-04-25T13:08:24Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736851#M229643</link>
      <description>&lt;P&gt;My 2 cents.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Should be reasonably fast as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                                                                                                                                                                                                                                                     
  input id (T1-T12) ($) ;                                                                                                                                                                                                                                        
  cards ;                                                                                                                                                                                                                                                       
1	E	A	E	B	A	A	E	A	C	B	E	F
2	F	A	E	F	E	E	E	E	A	E	E	E
3	A	C	C	E	E	E	A	F	D	D	E	F
4	A	F	F	D	B	B	C	A	A	A	C	C
5	B	B	C	C	D	A	A	A	B	E	E	F
;                                     

data want(keep = id id2 same);

   set have;
   id2 = .;
   length same $ 1000;
   same = '';
   array t {*} $ t1  - t12;
   array tt{*} $ tt1 - tt12;

   do i = 1 to dim(tt);
      tt[i] = t[i];
   end;

   if _N_ = 1 then do;
      dcl hash h(dataset : "have(rename = id = id2)", ordered : "Y");
      h.definekey("id2");
      h.definedata("id2");
      do i = 1 to dim(t);
         h.definedata(vname(t[i]));
      end;
      h.definedone();
      dcl hiter hi("h");
   end;

   hi.setcur(key : id);

   do while (hi.next() = 0);
      do i = 1 to dim(t);
         if t[i] = tt[i] then same = catx(',', same, vname(t[i]));
      end;
      output;
   end;

run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 25 Apr 2021 13:42:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736851#M229643</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-04-25T13:42:42Z</dc:date>
    </item>
    <item>
      <title>Re: Comparing multiple character variables between IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736852#M229644</link>
      <description>&lt;P&gt;Small correction.&lt;/P&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;&lt;/CODE&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have ;                                                                                                                                                                                                                                                     
  input id (T1-T12) ($) ;                                                                                                                                                                                                                                        
  cards ;                                                                                                                                                                                                                                                       
1	E	A	E	B	A	A	E	A	C	B	E	F
2	F	A	E	F	E	E	E	E	A	E	E	E
3	A	C	C	E	E	E	A	F	D	D	E	F
4	A	F	F	D	B	B	C	A	A	A	C	C
5	B	B	C	C	D	A	A	A	B	E	E	F
;                                     

data want(keep = id id2 same);

   set have;
   id2 = .;
   length same $ 1000;
   same = '';
   array t {*}  $ t1  - t12;
   array tt{12} $ _temporary_;

   do i = 1 to dim(tt);
      tt[i] = t[i];
   end;

   if _N_ = 1 then do;
      dcl hash h(dataset : "have(rename = id = id2)", ordered : "Y");
      h.definekey("id2");
      h.definedata("id2");
      do i = 1 to dim(t);
         h.definedata(vname(t[i]));
      end;
      h.definedone();
      dcl hiter hi("h");
   end;

   hi.setcur(key : id);

   do while (hi.next() = 0);
      do i = 1 to dim(t);
         if t[i] = tt[i] then same = catx(',', same, vname(t[i]));
      end;
      output;
   end;

run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;
&lt;/CODE&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 25 Apr 2021 17:14:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Comparing-multiple-character-variables-between-IDs/m-p/736852#M229644</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2021-04-25T17:14:17Z</dc:date>
    </item>
  </channel>
</rss>

