<?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: Compare variables of same dataset in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348506#M273410</link>
    <description>&lt;P&gt;Another version using a hash lookup.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input (v1-v3) ($);
datalines;
1 1 A
2 A C
3 2 M
B D 3
;
run;

proc sql;
  create view vHave as
    select v2 as v1 from have
    outer union corr
    select v3 as v1 from have
  ;
quit;

data want;
  set have end=last;
  if _n_=1 then
    do;
      dcl hash h1(dataset:'vHave', multidata:'n');
      h1.defineKey('v1');
      h1.defineDone();
    end;
  if h1.check() ne 0 then match='no ';
  else match='yes';
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sun, 09 Apr 2017 12:01:24 GMT</pubDate>
    <dc:creator>Patrick</dc:creator>
    <dc:date>2017-04-09T12:01:24Z</dc:date>
    <item>
      <title>Compare variables of same dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348439#M273404</link>
      <description>&lt;P&gt;I have a dataset with 3 variables -&amp;nbsp;V1, V2 and V3.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;V1    V2     V3

1      1     A
2      A     C
3      2     M
B      D     3&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I want to compare the variables and find if the values in varibale V1 is present in either of the variable V2 or V3 and generate the output accordingly.&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;So in the above example, 1, 2 and 3 values of variable V1 are present in either V2 or in V3 variables. Ouput should say "B" is not present in V2 and V3. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Any help would be greatly appreciated.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 08 Apr 2017 18:41:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348439#M273404</guid>
      <dc:creator>abhy3</dc:creator>
      <dc:date>2017-04-08T18:41:41Z</dc:date>
    </item>
    <item>
      <title>Re: Compare variables of same dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348443#M273405</link>
      <description>&lt;P&gt;Transposing your data and using PROC FREQ is the best choice IMO, output would be like below in listing and you get a dataset you can filter.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="IDX" class="proc_title_group"&gt;
&lt;P class="c proctitle"&gt;The FREQ Procedure&lt;/P&gt;
&lt;/DIV&gt;
&lt;SECTION&gt;
&lt;ARTICLE&gt;
&lt;TABLE&gt;&lt;CAPTION&gt;&amp;nbsp;&lt;/CAPTION&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="c t"&gt;
&lt;TABLE class="table"&gt;&lt;COLGROUP&gt;&lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="t header" scope="col"&gt;
&lt;DIV class="stacked-cell"&gt;Frequency&lt;/DIV&gt;
&lt;/TH&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;TABLE class="table"&gt;&lt;COLGROUP&gt;&lt;COL /&gt;&lt;/COLGROUP&gt;&lt;COLGROUP&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c header" colspan="10" scope="colgroup"&gt;Table&amp;nbsp;of&amp;nbsp;variable_name&amp;nbsp;by&amp;nbsp;variable_value&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="c b header" rowspan="2" scope="col"&gt;variable_name&lt;/TH&gt;
&lt;TH class="c b header" colspan="9" scope="colgroup"&gt;variable_value&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="r header" scope="col"&gt;1&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;2&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;3&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;A&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;B&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;C&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;D&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;M&lt;/TH&gt;
&lt;TH class="r header" scope="col"&gt;Total&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="t rowheader" scope="row"&gt;V1&lt;/TH&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;4&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="t rowheader" scope="row"&gt;V2&lt;/TH&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;4&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="t rowheader" scope="row"&gt;V3&lt;/TH&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;0&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;4&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="t rowheader" scope="row"&gt;Total&lt;/TH&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;2&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;2&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;2&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;2&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;1&lt;/DIV&gt;
&lt;/TD&gt;
&lt;TD class="r t data"&gt;
&lt;DIV class="stacked-cell"&gt;12&lt;/DIV&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    input V1 $    V2 $    V3 $;
    cards;
1      1     A
2      A     C
3      2     M
B      D     3
;
run;

data long_format;
    set want;
    array v(*) v1-v3;

    do i=1 to dim(v);
        variable_name=vname(v(i));
        variable_value=v(i);
        output;
    end;
    keep variable:;
run;

proc freq data=long_format;
    table variable_name*variable_value / nopercent norow nocol out=freqs_out;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/ARTICLE&gt;
&lt;/SECTION&gt;</description>
      <pubDate>Sat, 08 Apr 2017 19:12:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348443#M273405</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-04-08T19:12:04Z</dc:date>
    </item>
    <item>
      <title>Re: Compare variables of same dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348444#M273406</link>
      <description>&lt;P&gt;Hello, I think put comments to log should meet your requirement:&lt;/P&gt;&lt;P&gt;/*your sample*/&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input (v1-v3) ($);&lt;BR /&gt;datalines;&lt;BR /&gt;1 1 A&lt;BR /&gt;2 A C&lt;BR /&gt;3 2 M&lt;BR /&gt;B D 3&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*Solution*/&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;if (_n_ = 1) then do;&lt;BR /&gt;if 0 then set have;&lt;BR /&gt;declare hash myhash(dataset: "have(keep=v2");&lt;BR /&gt;rc = myhash.definekey('v2');&lt;BR /&gt;myhash.definedone();&lt;BR /&gt;declare hash myhash2(dataset: "have(keep=v3");&lt;BR /&gt;rc = myhash2.definekey('v3');&lt;BR /&gt;myhash2.definedone();&lt;BR /&gt;end;&lt;BR /&gt;set have(keep=v1);&lt;BR /&gt;if myhash.check(key:v1) ne 0 then put v1= 'is not in Variable 2';&lt;BR /&gt;if myhash2.check(key:v1) ne 0 then put v1= 'is not in Variable 3';&lt;BR /&gt;if myhash.check(key:v1) = 0 then put v1= 'is in Variable 2' ;&lt;BR /&gt;if myhash2.check(key:v1) = 0 then put v1= 'is in Variable 3' ;&lt;BR /&gt;if myhash.check(key:v1) ne 0 and myhash2.check(key:v1) ne 0 then put v1= 'is not in Variable 2 and variable 3';&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards.&lt;/P&gt;&lt;P&gt;Naveen Srinivasan&lt;/P&gt;</description>
      <pubDate>Sat, 08 Apr 2017 19:20:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348444#M273406</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-04-08T19:20:42Z</dc:date>
    </item>
    <item>
      <title>Re: Compare variables of same dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348447#M273407</link>
      <description>&lt;PRE&gt;data have;
input (v1-v3) ($);
datalines;
1 1 A
2 A C
3 2 M
B D 3
;

data want;
  set have;
  length comment $40.;
  array fields(2) $ v2 v3;
  if v1 not in fields then 
   comment= catt('"',v1,'" is not present in V2 and V3');
run;
&lt;/PRE&gt;
&lt;P&gt;Art, CEO, AnalystFinder.com&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 08 Apr 2017 19:55:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348447#M273407</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2017-04-08T19:55:32Z</dc:date>
    </item>
    <item>
      <title>Re: Compare variables of same dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348473#M273408</link>
      <description>&lt;P&gt;This should produce the report of all V1 values that do not appear in V2 or V3:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sql;&lt;/P&gt;
&lt;P&gt;select V1 from have where&lt;/P&gt;
&lt;P&gt;V1 not in (select distinct V2 from have) and&lt;/P&gt;
&lt;P&gt;V1 not in (select distinct V3 from have);&lt;/P&gt;
&lt;P&gt;quit;&lt;/P&gt;</description>
      <pubDate>Sun, 09 Apr 2017 02:41:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348473#M273408</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-04-09T02:41:50Z</dc:date>
    </item>
    <item>
      <title>Re: Compare variables of same dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348490#M273409</link>
      <description>&lt;P&gt;The same thing I was thinking. Just adding additional "distinct" and "order by" to clean up the output&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select distinct V1&lt;/P&gt;&lt;P&gt;&amp;nbsp; from have&lt;/P&gt;&lt;P&gt;&amp;nbsp; where V1 not in (select distinct V2 from have) and V1 not in (select distinct V3 from have)&lt;/P&gt;&lt;P&gt;&amp;nbsp; order by V1&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;</description>
      <pubDate>Sun, 09 Apr 2017 06:28:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348490#M273409</guid>
      <dc:creator>CiCi</dc:creator>
      <dc:date>2017-04-09T06:28:40Z</dc:date>
    </item>
    <item>
      <title>Re: Compare variables of same dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348506#M273410</link>
      <description>&lt;P&gt;Another version using a hash lookup.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input (v1-v3) ($);
datalines;
1 1 A
2 A C
3 2 M
B D 3
;
run;

proc sql;
  create view vHave as
    select v2 as v1 from have
    outer union corr
    select v3 as v1 from have
  ;
quit;

data want;
  set have end=last;
  if _n_=1 then
    do;
      dcl hash h1(dataset:'vHave', multidata:'n');
      h1.defineKey('v1');
      h1.defineDone();
    end;
  if h1.check() ne 0 then match='no ';
  else match='yes';
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 09 Apr 2017 12:01:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Compare-variables-of-same-dataset/m-p/348506#M273410</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2017-04-09T12:01:24Z</dc:date>
    </item>
  </channel>
</rss>

