<?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: Identify unique values across multiple columns in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Identify-unique-values-across-multiple-columns/m-p/713605#M220176</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/52727"&gt;@lizzy28&lt;/a&gt;&amp;nbsp; I would recommend to have a FLAG for unique and dups, so that you can filter and summarize however you want-&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
input USERID $	(Phone1	Phone2	Phone3) (:$12.);
cards;
1	1234567890	1234567890	1234567890
2	2345678901	2345678901	 .
3	4567890123	4567890124	4567890125
4	9876543210	9876543211	 .
5	8765432109	8765432109	8765432110
6	6543210987	 .	6543210988
;
proc transpose data=have out=temp;
 by userid;
 var phone1-phone3;
run;

proc sort data=temp;
 where col1&amp;gt;' ';
 by userid col1;
run;

data want;
 set temp;
 by userid col1;
 length check $12;
 if not(first.col1 and last.col1) then check='Dups';
 else check='unique';
 rename col1=phone_no
 _name_=Phone;
run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="l header" scope="col"&gt;USERID&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;Phone&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;phone_no&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;check&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;1234567890&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;1234567890&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone3&lt;/TD&gt;
&lt;TD class="l data"&gt;1234567890&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;2345678901&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;2345678901&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;4567890123&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;4567890124&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone3&lt;/TD&gt;
&lt;TD class="l data"&gt;4567890125&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;4&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;9876543210&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;4&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;9876543211&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;8765432109&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;8765432109&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone3&lt;/TD&gt;
&lt;TD class="l data"&gt;8765432110&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;6&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;6543210987&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;6&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone3&lt;/TD&gt;
&lt;TD class="l data"&gt;6543210988&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
    <pubDate>Sat, 23 Jan 2021 17:23:24 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2021-01-23T17:23:24Z</dc:date>
    <item>
      <title>Identify unique values across multiple columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Identify-unique-values-across-multiple-columns/m-p/713602#M220175</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need to pick out unique phone numbers among three columns per ID as below:&lt;/P&gt;
&lt;TABLE width="324"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="79"&gt;USERID&lt;/TD&gt;
&lt;TD width="87"&gt;Phone1&lt;/TD&gt;
&lt;TD width="79"&gt;Phone2&lt;/TD&gt;
&lt;TD width="79"&gt;Phone3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1234567890&lt;/TD&gt;
&lt;TD&gt;1234567890&lt;/TD&gt;
&lt;TD&gt;1234567890&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;2345678901&lt;/TD&gt;
&lt;TD&gt;2345678901&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;4567890123&lt;/TD&gt;
&lt;TD&gt;4567890124&lt;/TD&gt;
&lt;TD&gt;4567890125&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;9876543210&lt;/TD&gt;
&lt;TD&gt;9876543211&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;8765432109&lt;/TD&gt;
&lt;TD&gt;8765432109&lt;/TD&gt;
&lt;TD&gt;8765432110&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;6543210987&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;6543210988&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;Some records actually have same numbers, like USERID 1 and 2 while others have different. I just wanted to keep unique numbers. If there is only one unique number, then phone1_valid takes that value; If there are two unique number, then phone1_valid and phone2_valid take the two values; etc..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you have a way to do that?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;
&lt;P&gt;Lz&lt;/P&gt;</description>
      <pubDate>Sat, 23 Jan 2021 15:59:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Identify-unique-values-across-multiple-columns/m-p/713602#M220175</guid>
      <dc:creator>lizzy28</dc:creator>
      <dc:date>2021-01-23T15:59:00Z</dc:date>
    </item>
    <item>
      <title>Re: Identify unique values across multiple columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Identify-unique-values-across-multiple-columns/m-p/713605#M220176</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/52727"&gt;@lizzy28&lt;/a&gt;&amp;nbsp; I would recommend to have a FLAG for unique and dups, so that you can filter and summarize however you want-&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;

data have;
input USERID $	(Phone1	Phone2	Phone3) (:$12.);
cards;
1	1234567890	1234567890	1234567890
2	2345678901	2345678901	 .
3	4567890123	4567890124	4567890125
4	9876543210	9876543211	 .
5	8765432109	8765432109	8765432110
6	6543210987	 .	6543210988
;
proc transpose data=have out=temp;
 by userid;
 var phone1-phone3;
run;

proc sort data=temp;
 where col1&amp;gt;' ';
 by userid col1;
run;

data want;
 set temp;
 by userid col1;
 length check $12;
 if not(first.col1 and last.col1) then check='Dups';
 else check='unique';
 rename col1=phone_no
 _name_=Phone;
run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Print: Data Set WORK.WANT" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="l header" scope="col"&gt;USERID&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;Phone&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;phone_no&lt;/TH&gt;
&lt;TH class="l header" scope="col"&gt;check&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;1234567890&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;1234567890&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;1&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone3&lt;/TD&gt;
&lt;TD class="l data"&gt;1234567890&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;2345678901&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;2&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;2345678901&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;4567890123&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;4567890124&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;3&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone3&lt;/TD&gt;
&lt;TD class="l data"&gt;4567890125&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;4&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;9876543210&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;4&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;9876543211&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;8765432109&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone2&lt;/TD&gt;
&lt;TD class="l data"&gt;8765432109&lt;/TD&gt;
&lt;TD class="l data"&gt;Dups&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;5&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone3&lt;/TD&gt;
&lt;TD class="l data"&gt;8765432110&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;6&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone1&lt;/TD&gt;
&lt;TD class="l data"&gt;6543210987&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="l data"&gt;6&lt;/TD&gt;
&lt;TD class="l data"&gt;Phone3&lt;/TD&gt;
&lt;TD class="l data"&gt;6543210988&lt;/TD&gt;
&lt;TD class="l data"&gt;unique&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Sat, 23 Jan 2021 17:23:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Identify-unique-values-across-multiple-columns/m-p/713605#M220176</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2021-01-23T17:23:24Z</dc:date>
    </item>
    <item>
      <title>Re: Identify unique values across multiple columns</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Identify-unique-values-across-multiple-columns/m-p/713616#M220180</link>
      <description>&lt;P&gt;You want to remove duplicates within rows.&amp;nbsp; Do you also want to remove duplicates across rows?&amp;nbsp; Or can USERIDs share a phone number?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 23 Jan 2021 19:18:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Identify-unique-values-across-multiple-columns/m-p/713616#M220180</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2021-01-23T19:18:11Z</dc:date>
    </item>
  </channel>
</rss>

