/********************************************************************
 * Programmer: Alan Neustadtl                        Date: 10-02-00 *
 *                                                                  *
 * This program demonstrates the use of the BY statement in SAS to  *
 *   list out cases within BY groups.                               *
 *                                                                  *
 ********************************************************************/

data bygrp1;
input class  college $  gpa;

datalines;
1 BSOS 4.0
1 BSOS 2.0
1 BSOS 3.4
1 HUMA 2.0
1 HUMA 3.9
1 HUMA 2.7
1 COMP 4.0
2 BSOS 2.8
2 BSOS 3.8
2 HUMA 3.9
2 COMP 2.1
2 COMP 3.2
3 COMP 3.9
3 COMP 3.7
3 COMP 4.0
3 HUMA 1.9
3 HUMA 2.7
4 BSOS 3.0
4 BSOS 3.0
4 BSOS 3.7
4 COMP 3.2
4 HUMA 2.1
;

proc format;
   value class 1 = 'Freshman '
               2 = 'Sophomore'
               3 = 'Junior   '
               4 = 'Senior   ';

proc sort;
   by class descending gpa;

proc print;
   format class class.;
run;


data bygrp3;
set bygrp1;
   by class;

f_class = first.class  ;
l_class = last.class   ;

if first.class then count=0;
count+1;
if count le 3 then output;
drop count;

proc print;
   format class class.;
run;