<?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: Conditionally count occurrences in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494434#M130286</link>
    <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;How do I&amp;nbsp;calculate the number of industries in a data step?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I just don't understand why people limit themselves to doing this in a data step, thus writing their own code; when SAS has created a procedure to do this, and added in lots amount of error checking and verification of results. See &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/45151"&gt;@RW9&lt;/a&gt;'s answer.&lt;/P&gt;</description>
    <pubDate>Tue, 11 Sep 2018 10:54:48 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2018-09-11T10:54:48Z</dc:date>
    <item>
      <title>Conditionally count occurrences</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494423#M130278</link>
      <description>&lt;P&gt;hi all; may you please assist. I have a dataset where one account can be in multiple industries. How do I&amp;nbsp;calculate the number of industries in a data step.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is the example of dataset:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Account number&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Industry&lt;/P&gt;&lt;P&gt;148060&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IN&lt;BR /&gt;148060&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CL&lt;BR /&gt;148060&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CC&lt;BR /&gt;148060&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HW&lt;BR /&gt;148060&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;FC&lt;/P&gt;&lt;P&gt;92865&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PL&lt;/P&gt;&lt;P&gt;150021&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PL&lt;/P&gt;&lt;P&gt;150021&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MB&lt;/P&gt;&lt;P&gt;150021&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NL&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;the expected outcome is:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Account number&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number of industries&lt;/P&gt;&lt;P&gt;148060&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&lt;/P&gt;&lt;P&gt;92865&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/P&gt;&lt;P&gt;150021&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;thanks ahead of time for your assistance.&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 08:57:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494423#M130278</guid>
      <dc:creator>NTR</dc:creator>
      <dc:date>2018-09-11T08:57:02Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally count occurrences</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494424#M130279</link>
      <description>&lt;P&gt;Why limit yourself to a data step?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Accountnumber $ Industry $;
datalines;
148060 IN
148060 CL
148060 CC
148060 HW
148060 FC
92865 PL
150021 PL
150021 MB
150021 NL
;

proc sql;
   create table want as
   select Accountnumber
         ,count(distinct Industry) as number_of_industries
   from have
   group by Accountnumber;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 11 Sep 2018 09:00:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494424#M130279</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2018-09-11T09:00:01Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally count occurrences</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494427#M130282</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt; Thanks for providing test-data in an usable form &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is&amp;nbsp; data-step, assuming that your source dataset is not sorted, but grouped by AccountNumber.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
   set have(keep=AccountNumber);
   by AccountNumber notsorted;  

   attrib noi length= 8 label= 'number of industries';
   retain noi;

   if first.AccountNumber then do;
      noi = 0;
   end;

   noi = noi + 1;

   if last.AccountNumber then do;
      output;
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 09:13:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494427#M130282</guid>
      <dc:creator>andreas_lds</dc:creator>
      <dc:date>2018-09-11T09:13:50Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally count occurrences</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494428#M130283</link>
      <description>&lt;P&gt;Post test data in the form of a datastep.&lt;/P&gt;
&lt;PRE&gt;data have;&lt;BR /&gt; input Account Industry $;&lt;BR /&gt;datalines;&lt;BR /&gt;148060 IN&lt;BR /&gt;148060 CL&lt;BR /&gt;148060 CC&lt;BR /&gt;148060 CL&lt;BR /&gt;148060 HW&lt;BR /&gt;148060 FC&lt;BR /&gt;;&lt;BR /&gt;run;&lt;BR /&gt;proc freq data=have;&lt;BR /&gt; tables account*industry / out=want;&lt;BR /&gt;run;&lt;/PRE&gt;</description>
      <pubDate>Tue, 11 Sep 2018 09:16:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494428#M130283</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-09-11T09:16:43Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally count occurrences</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494434#M130286</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;How do I&amp;nbsp;calculate the number of industries in a data step?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I just don't understand why people limit themselves to doing this in a data step, thus writing their own code; when SAS has created a procedure to do this, and added in lots amount of error checking and verification of results. See &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/45151"&gt;@RW9&lt;/a&gt;'s answer.&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 10:54:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494434#M130286</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-09-11T10:54:48Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally count occurrences</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494498#M130322</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/10892"&gt;@PaigeMiller&lt;/a&gt;&amp;nbsp;Good morning, I am afraid RW's proc freq will not produce the results that OP wants for the reason Proc freq counts the number of occurrences of values however OP wants the total number of distinct occurrences within a by group.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 14:51:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494498#M130322</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-09-11T14:51:19Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally count occurrences</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494499#M130323</link>
      <description>&lt;P&gt;This is easily fixed by doing two consecutive PROC FREQs&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 14:52:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494499#M130323</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-09-11T14:52:52Z</dc:date>
    </item>
    <item>
      <title>Re: Conditionally count occurrences</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494560#M130344</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/15475"&gt;@andreas_lds&lt;/a&gt;&amp;nbsp; I'm afraid should the requirement be count of "&lt;U&gt;&lt;EM&gt;distinct&lt;/EM&gt; &lt;/U&gt;industries" for each account number, your code would yield incorrect results, like for the revised "have"&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data have;&lt;BR /&gt;input Accountnumber $ Industry $;&lt;BR /&gt;datalines;&lt;BR /&gt;148060 IN&lt;BR /&gt;&lt;STRONG&gt;148060 CL&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;148060 CL&lt;/STRONG&gt;&lt;BR /&gt;148060 CC&lt;BR /&gt;148060 HW&lt;BR /&gt;148060 FC&lt;BR /&gt;&lt;STRONG&gt;92865 PL&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;92865 PL&lt;/STRONG&gt;&lt;BR /&gt;150021 PL&lt;BR /&gt;150021 MB&lt;BR /&gt;150021 NL&lt;BR /&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Of course a simple proc sort and nodupkey will offset the problem:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sort data=have out=_have nodupkey;&lt;BR /&gt;by Accountnumber industry;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;BR /&gt; set _have(keep=AccountNumber);&lt;BR /&gt; by AccountNumber notsorted;&lt;/P&gt;
&lt;P&gt;attrib noi length= 8 label= 'number of industries';&lt;BR /&gt; retain noi;&lt;/P&gt;
&lt;P&gt;if first.AccountNumber then do;&lt;BR /&gt; noi = 0;&lt;BR /&gt; end;&lt;/P&gt;
&lt;P&gt;noi = noi + 1;&lt;/P&gt;
&lt;P&gt;if last.AccountNumber then do;&lt;BR /&gt; output;&lt;BR /&gt; end;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;/*Or a DOW fun*/&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;proc sort data=have out=_have nodupkey;&lt;BR /&gt;by Accountnumber industry;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;data want;&lt;BR /&gt;do number_of_industries= 1 by 1 until(last.Accountnumber);&lt;BR /&gt;set _have;&lt;BR /&gt;by Accountnumber ;&lt;BR /&gt;end;&lt;BR /&gt;drop industry;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 11 Sep 2018 17:24:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Conditionally-count-occurrences/m-p/494560#M130344</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-09-11T17:24:33Z</dc:date>
    </item>
  </channel>
</rss>

