<?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: Count by ID in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Count-by-ID/m-p/463825#M118221</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID	Subject$;
cards;
1	High
1	Med
1	Med
2	Low
2	Low
3	High
3	Low
3	Med
3	Med
;

proc freq data= have;
by id;
tables subject/out=_have(drop=percent);
run;

proc transpose data=_have out=want(drop=_label_);
by id;
var count;
id subject;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 21 May 2018 17:15:14 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2018-05-21T17:15:14Z</dc:date>
    <item>
      <title>Count by ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-by-ID/m-p/463822#M118220</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a large SAS dataset with multiple columns where two in particular are of interest: ID (unique) and subject.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to count the number of times each ID has an associated subject (see example below).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is what I have:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;Subject&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;High&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Low&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Low&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;High&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Low&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is what I need:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;High&lt;/TD&gt;&lt;TD&gt;Med&lt;/TD&gt;&lt;TD&gt;Low&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any suggestions on how I can achieve this in a single data step?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried to do something like this but can't get it to work efficiently:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data need;&lt;BR /&gt;set have;&lt;BR /&gt;by ID notsorted;&lt;BR /&gt;if first.ID and subject='High' then High=0;&lt;BR /&gt;High+1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help would be greatly appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Pete&lt;/P&gt;</description>
      <pubDate>Mon, 21 May 2018 16:58:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-by-ID/m-p/463822#M118220</guid>
      <dc:creator>PetePatel</dc:creator>
      <dc:date>2018-05-21T16:58:54Z</dc:date>
    </item>
    <item>
      <title>Re: Count by ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-by-ID/m-p/463825#M118221</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID	Subject$;
cards;
1	High
1	Med
1	Med
2	Low
2	Low
3	High
3	Low
3	Med
3	Med
;

proc freq data= have;
by id;
tables subject/out=_have(drop=percent);
run;

proc transpose data=_have out=want(drop=_label_);
by id;
var count;
id subject;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 21 May 2018 17:15:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-by-ID/m-p/463825#M118221</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-05-21T17:15:14Z</dc:date>
    </item>
    <item>
      <title>Re: Count by ID</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-by-ID/m-p/463826#M118222</link>
      <description>&lt;P&gt;The suggestion you already received will get you the result you want.&amp;nbsp; However, since you specifically asked for a DATA step solution in a single step, here is how you would go about that:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by id;&lt;/P&gt;
&lt;P&gt;if first.id then do;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; high = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; med = 0;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; low = 0;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;if subject='High' then high + 1;&lt;/P&gt;
&lt;P&gt;else if subject='Med' then med + 1;&lt;/P&gt;
&lt;P&gt;else if subject='Low' then low + 1;&lt;/P&gt;
&lt;P&gt;drop subject;&lt;/P&gt;
&lt;P&gt;if last.id;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Mon, 21 May 2018 17:18:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-by-ID/m-p/463826#M118222</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-05-21T17:18:49Z</dc:date>
    </item>
  </channel>
</rss>

