<?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 get number of distinct elements in each row without nested if-else loops in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/372856#M89183</link>
    <description>&lt;P&gt;Hi, another (belated) idea though you end up with sorted names ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;data x;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;input (name1-name4) (:$2.);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;AA BB CC DD&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;AA AA BB EE&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;FF FF CC CC&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;AA AA AA AA&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;BB BB BB ZZ&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;AA CC CC AA&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;JJ KK KK KK&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;ZZ YY ZZ YY&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;QQ QQ EE FF&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;data y (drop=names);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;length names $30;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;set x;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;call sortc(of name1-name4);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;names = catx(' ',of name: );&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;howmany = (count(tranwrd(names,name1,''),name2) ne 0) + &lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (count(tranwrd(names,name2,''),name3) ne 0) +&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (count(tranwrd(names,name3,''),name4) ne 0) + 1;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;data y (drop=j);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;set x;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;array name(4);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;call sortc(of name1-name4);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;howmany = 1;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;do j=1 to 3;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp;howmany + ^^find(tranwrd(catx(' ',of name: ),name(j),''),name(j+1));&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;end; &lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(^^find ... changes result from location to 1 if found, 0 if not ... thanks to Howard Schreier)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA SET: y

name1    name2    name3    name4    howmany

 AA       BB       CC       DD         4
 AA       AA       BB       EE         3
 CC       CC       FF       FF         2
 AA       AA       AA       AA         1
 BB       BB       BB       ZZ         2
 AA       AA       CC       CC         2
 JJ       KK       KK       KK         2
 YY       YY       ZZ       ZZ         2
 EE       FF       QQ       QQ         3
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 04 Jul 2017 03:03:10 GMT</pubDate>
    <dc:creator>MikeZdeb</dc:creator>
    <dc:date>2017-07-04T03:03:10Z</dc:date>
    <item>
      <title>how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183891#M34922</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a table which has multiple columns and large number of rows.&amp;nbsp; A sub sample give below , in this case Name1-Name4 are different column names which coded with two character values.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="256"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl63" height="20" width="64"&gt;Name1&lt;/TD&gt;&lt;TD class="xl63" style="border-left: none;" width="64"&gt;Name2&lt;/TD&gt;&lt;TD class="xl63" style="border-left: none;" width="64"&gt;Name3&lt;/TD&gt;&lt;TD class="xl63" style="border-left: none;" width="64"&gt;Name4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20" style="border-top: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;CC&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;DD&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20" style="border-top: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;EE&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20" style="border-top: none;"&gt;FF&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;FF&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;CC&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;CC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20" style="border-top: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;AA&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl63" height="20" style="border-top: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl63" style="border-top: none; border-left: none;"&gt;ZZ&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am interested in finding distinct in number of characters in each row . that is final output table has to look like this &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="320"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl65" height="20" width="64"&gt;Name1&lt;/TD&gt;&lt;TD class="xl65" style="border-left: none;" width="64"&gt;Name2&lt;/TD&gt;&lt;TD class="xl65" style="border-left: none;" width="64"&gt;Name3&lt;/TD&gt;&lt;TD class="xl65" style="border-left: none;" width="64"&gt;Name4&lt;/TD&gt;&lt;TD class="xl65" style="border-left: none;" width="64"&gt;Count&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl65" height="20" style="border-top: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;CC&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;DD&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-top: none; border-left: none;"&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl65" height="20" style="border-top: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;EE&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-top: none; border-left: none;"&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl65" height="20" style="border-top: none;"&gt;FF&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;FF&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;CC&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;CC&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-top: none; border-left: none;"&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl65" height="20" style="border-top: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;AA&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;AA&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-top: none; border-left: none;"&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl65" height="20" style="border-top: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;BB&lt;/TD&gt;&lt;TD class="xl65" style="border-top: none; border-left: none;"&gt;ZZ&lt;/TD&gt;&lt;TD align="right" class="xl65" style="border-top: none; border-left: none;"&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the first row all the elements are distinct , so the count is 4. In second row there are 3 distinct values [AA,BB,EE]. Similarly for others&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please help to solve this issues without using multiple if-else statements.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Yoonus&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 14:43:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183891#M34922</guid>
      <dc:creator>SAS_Dude</dc:creator>
      <dc:date>2014-10-14T14:43:58Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183892#M34923</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your data is not in third normal form. If it would, the task is simple.&lt;/P&gt;&lt;P&gt;If you lack of a natural key, set a row id, transpose your data, then use select count(distinct name) group by rowid.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 15:07:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183892#M34923</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2014-10-14T15:07:07Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183893#M34924</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;id+1;&lt;/P&gt;&lt;P&gt;input (Name1 Name2 Name3 Name4)($);&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;AA BB CC DD&lt;/P&gt;&lt;P&gt;AA AA BB EE&lt;/P&gt;&lt;P&gt;FF FF CC CC&lt;/P&gt;&lt;P&gt;AA AA AA AA&lt;/P&gt;&lt;P&gt;BB BB BB ZZ&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=have out=have1;&lt;/P&gt;&lt;P&gt;by id;&lt;/P&gt;&lt;P&gt;var name1-name4;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;select a.name1,a.name2,a.name3,a.name4,b.distinct_count from have a&lt;/P&gt;&lt;P&gt;left join (select id,count(distinct col1) as distinct_count from have1 group by id) b&lt;/P&gt;&lt;P&gt;on a.id=b.id;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 15:11:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183893#M34924</guid>
      <dc:creator>stat_sas</dc:creator>
      <dc:date>2014-10-14T15:11:51Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183894#M34925</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here's some code that could be stuck in a DATA step to help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;array names {*} name1-name4;&lt;/P&gt;&lt;P&gt;count=1;&lt;/P&gt;&lt;P&gt;do _J_=1 to dim(names)-1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; increment=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do _K_=_J_+1 to dim(names);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if names{_J_} = names{_K_} then increment=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; count + increment;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You could hard-code 4 instead of using the DIM function.&amp;nbsp; But it looked like the number of elements might actually be much larger in real life.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 15:12:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183894#M34925</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2014-10-14T15:12:54Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183895#M34926</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="5253" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;'s suggestion won't work correctly if you have missing values. I think that the following would get around that:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want (drop=_:);&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array names(*) name1-name4;&lt;/P&gt;&lt;P&gt;&amp;nbsp; array _names(4) $;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do _i=1 to 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _names(_i)=names(_i);&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; call sortc(of _names(*));&lt;/P&gt;&lt;P&gt;&amp;nbsp; count=ifn(missing(_names(dim(names))),0,1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; do _i=1 to dim(names)-1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if not missing(_names(_i)) then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _names(_i) ne _names(_i+1) then count+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 15:21:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183895#M34926</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2014-10-14T15:21:16Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183896#M34927</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is one way:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input (Name1 Name2 Name3 Name4)($);&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;AA BB CC DD&lt;/P&gt;&lt;P&gt;AA AA BB EE&lt;/P&gt;&lt;P&gt;FF FF CC CC&lt;/P&gt;&lt;P&gt;AA AA AA AA&lt;/P&gt;&lt;P&gt;BB BB BB ZZ&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; array k&lt;LI&gt; $ Name1 - Name4;&lt;/LI&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; count = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do i = 1 to dim(k) - 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if k&lt;I&gt; ^= k[i + 1] then count + 1;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;drop i;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The output:&lt;/P&gt;&lt;P&gt;Obs&amp;nbsp;&amp;nbsp;&amp;nbsp; Name1&amp;nbsp;&amp;nbsp;&amp;nbsp; Name2&amp;nbsp;&amp;nbsp;&amp;nbsp; Name3&amp;nbsp;&amp;nbsp;&amp;nbsp; Name4&amp;nbsp;&amp;nbsp;&amp;nbsp; count&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;&lt;P&gt;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ZZ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 16:08:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183896#M34927</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2014-10-14T16:08:09Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183897#M34928</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Art,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It's conceivable that blanks should be treated as a valid level in the counting.&amp;nbsp; But if not, here's how I would modify the solution:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;array names {*} name1-name4;&lt;/P&gt;&lt;P&gt;count=1;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;decrement=0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;do _J_=1 to dim(names)-1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; increment=1;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; if names{_J_}=' ' then decrement=1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do _K_=_J_+1 to dim(names);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if names{_J_} = names{_K_} then increment=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; count + increment;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if names{dim(names)}=' ' then decrement=1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;count = count - decrement;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 17:37:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183897#M34928</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2014-10-14T17:37:49Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183898#M34929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Muthia,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your solution does not work for the following case that give wrong result:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AA BB CC DD&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;AA AA BB EE&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;FF CC FF CC&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;AA AA AA AA&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;BB BB ZZ BB&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CTorres&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 Oct 2014 19:03:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183898#M34929</guid>
      <dc:creator>CTorres</dc:creator>
      <dc:date>2014-10-14T19:03:50Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183899#M34930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.6666669845581px; font-weight: bold; background-color: #ffffff;"&gt;I overlooked the ordering of Values.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.6666669845581px; font-weight: bold; background-color: #ffffff;"&gt;Thanks to &lt;/SPAN&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.6666669845581px; font-weight: bold; background-color: #ffffff;"&gt;Gergely Bathó.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.6666669845581px; font-weight: bold; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.6666669845581px; font-weight: bold; background-color: #ffffff;"&gt;Using call sortc() will help in this case, but the values will be&amp;nbsp; in ascending &lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px; font-weight: bold; background-color: #ffffff;"&gt;order in &lt;/SPAN&gt;the output.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.6666669845581px; font-weight: bold; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data want;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; array k&lt;/STRONG&gt;&lt;LI&gt;&lt;STRONG&gt; $ Name1 - Name4;&lt;/STRONG&gt;&lt;/LI&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; call sortc(of k&lt;/STRONG&gt;&lt;LI&gt;&lt;STRONG&gt;);&lt;/STRONG&gt;&lt;/LI&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; count = 1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; do i = 1 to dim(k) - 1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if k&lt;I&gt; ^= k[i + 1] then count + 1;&lt;/I&gt;&lt;/STRONG&gt;&lt;I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;drop i;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.6666669845581px; font-weight: bold; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Oct 2014 08:11:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183899#M34930</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2014-10-15T08:11:30Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183900#M34931</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE&gt;data have;
input (Name1 Name2 Name3 Name4)($);
datalines;
AA BB CC DD
AA AA BB EE
FF FF CC CC
AA AA AA AA
BB BB BB ZZ
;
run;
data have(drop=i);
set have;
array t{100} $32 _temporary_ ;
array x{*} $ name1-name4;
n=0;call missing(of t{*});
do i=1 to dim(x);
if x{i} not in t then do;n+1;t{n}=x{i};end;
end;
run;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Xia Keshan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Oct 2014 09:04:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/183900#M34931</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2014-10-15T09:04:04Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/372641#M89128</link>
      <description>&lt;P&gt;Ksharp, thank you for a very thoughtful and efficient solution.&lt;/P&gt;
&lt;P&gt;I modified the array references a little bit -- to make it work in a PROC FCMP.&lt;/P&gt;
&lt;P&gt;Since SAS doesn't have a built-in function like this, I wanted to make my own.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;datasets&lt;/STRONG&gt; nolist lib=work; delete functions; &lt;STRONG&gt;quit&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;options cmplib=_null_;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;fcmp&lt;/STRONG&gt; outlib=work.functions.smd;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; function count_dist_val(arr_val{*} $ ) varargs ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; array t{&lt;STRONG&gt;100&lt;/STRONG&gt;} $&lt;STRONG&gt;100&lt;/STRONG&gt; _temporary_ ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; n = &lt;STRONG&gt;0&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; call missing( of t1-t100);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; do i=&lt;STRONG&gt;1&lt;/STRONG&gt; to dim(arr_val);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arr_val{i} not in (t1-t100) then&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n + &lt;STRONG&gt;1&lt;/STRONG&gt; ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t{n} = arr_val{i} ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; end;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; return (n);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; endsub;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;options cmplib=work.functions;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; have;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;input (name1 name2 name3 name4)($);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; array x{*} $ name1-name4;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; dist_val = count_dist_val(x) ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; put dist_val= ;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;datalines;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;AA BB CC DD&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;AA AA BB EE&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;FF FF CC CC&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;AA AA AA AA&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;BB BB BB ZZ&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 09 Jul 2017 02:22:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/372641#M89128</guid>
      <dc:creator>agoldma</dc:creator>
      <dc:date>2017-07-09T02:22:51Z</dc:date>
    </item>
    <item>
      <title>Re: how to get number of distinct elements in each row without nested if-else loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/372856#M89183</link>
      <description>&lt;P&gt;Hi, another (belated) idea though you end up with sorted names ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;data x;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;input (name1-name4) (:$2.);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;AA BB CC DD&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;AA AA BB EE&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;FF FF CC CC&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;AA AA AA AA&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;BB BB BB ZZ&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;AA CC CC AA&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;JJ KK KK KK&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;ZZ YY ZZ YY&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;QQ QQ EE FF&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;data y (drop=names);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;length names $30;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;set x;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;call sortc(of name1-name4);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;names = catx(' ',of name: );&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;howmany = (count(tranwrd(names,name1,''),name2) ne 0) + &lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (count(tranwrd(names,name2,''),name3) ne 0) +&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (count(tranwrd(names,name3,''),name4) ne 0) + 1;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;data y (drop=j);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;set x;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;array name(4);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;call sortc(of name1-name4);&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;howmany = 1;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;do j=1 to 3;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp;howmany + ^^find(tranwrd(catx(' ',of name: ),name(j),''),name(j+1));&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;end; &lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(^^find ... changes result from location to 1 if found, 0 if not ... thanks to Howard Schreier)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA SET: y

name1    name2    name3    name4    howmany

 AA       BB       CC       DD         4
 AA       AA       BB       EE         3
 CC       CC       FF       FF         2
 AA       AA       AA       AA         1
 BB       BB       BB       ZZ         2
 AA       AA       CC       CC         2
 JJ       KK       KK       KK         2
 YY       YY       ZZ       ZZ         2
 EE       FF       QQ       QQ         3
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 04 Jul 2017 03:03:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-get-number-of-distinct-elements-in-each-row-without/m-p/372856#M89183</guid>
      <dc:creator>MikeZdeb</dc:creator>
      <dc:date>2017-07-04T03:03:10Z</dc:date>
    </item>
  </channel>
</rss>

