<?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: counting number of observations in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687473#M208702</link>
    <description>&lt;P&gt;Easy in a DATA step:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input TEACHER_ID $ CLASS_ID $ X;
datalines;
T1  C1  4
T1  C1  3
T1  C2  3
T1  C2  3
T1  C2  4
T1  C3  2
T1  C3  3
T2  C4  4
T2  C4  4
T2  C4  3
T2  C4  2
T2  C5  2
T2  C5  2
;

data want;
set have;
by teacher_id class_id;
if first.teacher_id
then do;
  nclass = 0;
  nstudents = 0;
end;
if first.class_id then nclass + 1;
nstudents + 1;
if last.teacher_id;
keep teacher_id nclass nstudents;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 29 Sep 2020 11:35:42 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2020-09-29T11:35:42Z</dc:date>
    <item>
      <title>counting number of observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687457#M208697</link>
      <description>&lt;P&gt;I have the following data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;TEACHER_ID&lt;/TD&gt;&lt;TD&gt;CLASS_ID&lt;/TD&gt;&lt;TD&gt;X&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T1&lt;/TD&gt;&lt;TD&gt;C1&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T1&lt;/TD&gt;&lt;TD&gt;C1&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T1&lt;/TD&gt;&lt;TD&gt;C2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T1&lt;/TD&gt;&lt;TD&gt;C2&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T1&lt;/TD&gt;&lt;TD&gt;C2&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T1&lt;/TD&gt;&lt;TD&gt;C3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T1&lt;/TD&gt;&lt;TD&gt;C3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T2&lt;/TD&gt;&lt;TD&gt;C4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T2&lt;/TD&gt;&lt;TD&gt;C4&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T2&lt;/TD&gt;&lt;TD&gt;C4&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T2&lt;/TD&gt;&lt;TD&gt;C4&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T2&lt;/TD&gt;&lt;TD&gt;C5&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;T2&lt;/TD&gt;&lt;TD&gt;C5&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;BR /&gt;There are two teachers: T1, T2.&lt;/P&gt;&lt;P&gt;T1 teaches three classes (C1, C2, and C3).&amp;nbsp; In C1, there are 2 students, in C2, there are 3 students, and&amp;nbsp;n C3, there are 2 students,&amp;nbsp;&lt;/P&gt;&lt;P&gt;T2 teaches two classes (C4, and C5).&amp;nbsp; In C4, there are 4 students, in C5, there are 2 students,&lt;/P&gt;&lt;P&gt;X is the score.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now, how do I write a program to calculate number of&amp;nbsp;&amp;nbsp;classes and number of students taught by each teacher?&lt;/P&gt;&lt;P&gt;and create a new data set as follows:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;TEACHER_ID&amp;nbsp;&amp;nbsp; &amp;nbsp;Nclass&amp;nbsp; &amp;nbsp;Nstudents&amp;nbsp;&lt;/P&gt;&lt;P&gt;T1&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&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;7&lt;/P&gt;&lt;P&gt;T2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;6&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 29 Sep 2020 10:18:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687457#M208697</guid>
      <dc:creator>tinghlin</dc:creator>
      <dc:date>2020-09-29T10:18:52Z</dc:date>
    </item>
    <item>
      <title>Re: counting number of observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687473#M208702</link>
      <description>&lt;P&gt;Easy in a DATA step:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input TEACHER_ID $ CLASS_ID $ X;
datalines;
T1  C1  4
T1  C1  3
T1  C2  3
T1  C2  3
T1  C2  4
T1  C3  2
T1  C3  3
T2  C4  4
T2  C4  4
T2  C4  3
T2  C4  2
T2  C5  2
T2  C5  2
;

data want;
set have;
by teacher_id class_id;
if first.teacher_id
then do;
  nclass = 0;
  nstudents = 0;
end;
if first.class_id then nclass + 1;
nstudents + 1;
if last.teacher_id;
keep teacher_id nclass nstudents;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 29 Sep 2020 11:35:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687473#M208702</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-09-29T11:35:42Z</dc:date>
    </item>
    <item>
      <title>Re: counting number of observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687474#M208703</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input (TEACHER_ID	CLASS_ID) ($)	X;
cards;
T1	C1	4
T1	C1	3
T1	C2	3
T1	C2	3
T1	C2	4
T1	C3	2
T1	C3	3
T2	C4	4
T2	C4	4
T2	C4	3
T2	C4	2
T2	C5	2
T2	C5	2
;

proc sql;
create table want as
select TEACHER_ID,count(distinct class_id) as Nclass, count(class_id) as Nstudents
from have
group by TEACHER_ID;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 29 Sep 2020 11:37:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687474#M208703</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-09-29T11:37:26Z</dc:date>
    </item>
    <item>
      <title>Re: counting number of observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687501#M208717</link>
      <description>&lt;P&gt;The statistical procedures such as FREQ MEANS SUMMARY UNIVARIATE do not count distinct values (as you want for CLASS_ID).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can use SQL to directly compute distinct counts&lt;/P&gt;
&lt;PRE&gt;data have;
input teacher_id $ class_id $ x;
datalines;
T1	C1	4
T1	C1	3
T1	C2	3
T1	C2	3
T1	C2	4
T1	C3	2
T1	C3	3
T2	C4	4
T2	C4	4
T2	C4	3
T2	C4	2
T2	C5	2
T2	C5	2
;

proc sql;
  create table want as
  select teacher_id, count(distinct class_id) as Nclass, count(X) as Nstudents
  from have
  group by teacher_id
  ;&lt;/PRE&gt;</description>
      <pubDate>Tue, 29 Sep 2020 13:17:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687501#M208717</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-09-29T13:17:21Z</dc:date>
    </item>
    <item>
      <title>Re: counting number of observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687727#M208817</link>
      <description>&lt;P&gt;thanks for&amp;nbsp; your reply.&amp;nbsp; &amp;nbsp;I found some extra problem&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;SMTT TEACHER_ID CLASS_ID X&lt;BR /&gt;1 T1 C1 4&lt;BR /&gt;1 T1 C1 3&lt;BR /&gt;1 T1 C2 3&lt;BR /&gt;2 T1 C2 3&lt;BR /&gt;2 T1 C2 4&lt;BR /&gt;2 T1 C3 2&lt;BR /&gt;2 T1 C3 3&lt;BR /&gt;1 T2 C4 4&lt;BR /&gt;1 T2 C4 4&lt;BR /&gt;1 T2 C4 3&lt;BR /&gt;1 T2 C4 2&lt;BR /&gt;2 T2 C5 2&lt;BR /&gt;2 T2 C5 2&lt;/P&gt;&lt;P&gt;SMTR is semester 1 and 2.&lt;/P&gt;&lt;P&gt;There are two teachers: T1, T2.&lt;/P&gt;&lt;P&gt;In semester 1, T1 teaches 2 classes (C1, C2). In C1, there are 2 students, in C2, 1 students.&lt;/P&gt;&lt;P&gt;In semester 2, T1 teaches 2 classes (C2, C3). In C2, there are 2 students, in C3, 2 student&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;lass C2 should be counted as two distinct classes since they are offered by two different semesters.&lt;/P&gt;&lt;P&gt;X is the score.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Now, how do I write a program to calculate distinct number of classes and number of students taught by each teacher?&lt;/P&gt;&lt;P&gt;and create a new data set as follows:&lt;/P&gt;&lt;P&gt;TEACHER_ID Nclass Nstudents&lt;/P&gt;&lt;P&gt;T1 4 7&lt;/P&gt;&lt;P&gt;T2 2 6&lt;/P&gt;</description>
      <pubDate>Wed, 30 Sep 2020 06:08:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687727#M208817</guid>
      <dc:creator>tinghlin</dc:creator>
      <dc:date>2020-09-30T06:08:25Z</dc:date>
    </item>
    <item>
      <title>Re: counting number of observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687732#M208820</link>
      <description>&lt;P&gt;Sort by teacher_id, smtr and class_id; use the same in the BY statement of the data step, but leave the rest of the code unchanged.&lt;/P&gt;</description>
      <pubDate>Wed, 30 Sep 2020 06:54:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687732#M208820</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-09-30T06:54:12Z</dc:date>
    </item>
    <item>
      <title>Re: counting number of observations</title>
      <link>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687747#M208824</link>
      <description>&lt;P&gt;SQL can count distinct combinations by concatenating the combination parts with a delimiter.&amp;nbsp; The delimiter ensures distinct combinations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;PRE&gt;proc sql;
  create table want as
  select 
    teacher_id
  , count (distinct catx('~',smtt,teacher_id,class_id)) as Nclass
  , count (x) as Nstudents
  from have
  group by teacher_id
  ;&lt;/PRE&gt;
&lt;P&gt;You can also do serial processing in DATA Step using &lt;EM&gt;nested&amp;nbsp;&lt;/EM&gt;DOW loops&lt;/P&gt;
&lt;PRE&gt;proc sort data=have;
  by teacher_id smtt class_id;
run;

data want;
  length teacher_id $8;
  do Nclass = sum(Nclass,1) by 1 until (last.teacher_id);
    do Nstudents = sum(Nstudents,1) by 1 until (last.class_id);
      set have;
      by teacher_id smtt class_id;
    end;
  end;
  keep teacher_id Nclass Nstudents;
run;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 30 Sep 2020 08:52:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/counting-number-of-observations/m-p/687747#M208824</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-09-30T08:52:18Z</dc:date>
    </item>
  </channel>
</rss>

