Ok, let me try this one last time. I am trying to sort the data into lower half, third quartile, and top quartile. However, I can't get this to work. The output shows all the data listed from a ClassRank of 41 to 100, with the GPA for each ClassRank. What I want is to divide the 60 observations into groups 41-60, 61-80, and 81-100, with the average GPA shown for each group. How would I do this? Below is my attempted way of doing this. At the bottom is the code for the dataset learn.college. Note that this is not a real data set, but a problem from an instructional book. Therefore, the ClassRank and GPA does not necessarily make sense in normal terms... i.e. a GPA of 4 would have a Lower ClassRank than someone with a GPA of 3.3. The data itself doesn't matter. How to organize the data into thirds with the average GPA calculated for each third is what matters. Thanks a lot! --------------------------- Libname Learn '/folders/myfolders/Learn' ; Libname Myformat '/folders/myfolders/sasuser.v94' ; proc format library=myformat ; value Rank 41-60 = 'Bottom Third'' 61-81 = 'Middle Third' 81-100 = 'Top Third'' ; run ; /* %let NumGroups= 4 ; proc rank data=learn.college Groups=&NumGroups ties=high ; var ClassRank ; Ranks QuartileRank ; run ; */ proc means data=learn.college noprint nway; Class ClassRank ; Var GPA ; Output Out=ClassRankSpecial ; run ; proc means data=ClassRankSpecial n mean maxdec=2 ; Class ClassRank ; Var GPA ; format ClassRank Rank. ; /*DONT FORGET THIS. FOR A JUST FORMATTED FORMAT, THIS MUST BE INCLUDED*/ run ; ------------------------ BELOW IS THE DATASET LEARN.COLLEGE: ------------------------ data learn.college; length StudentID $ 5 Gender SchoolSize $ 1; do i = 1 to 100; StudentID = put(round(ranuni(123456)*10000),z5.); if ranuni(0) lt .4 then Gender = 'M'; else Gender = 'F'; if ranuni(0) lt .3 then SchoolSize = 'S'; else if ranuni(0) lt .7 then SchoolSize = 'M'; else SchoolSize = 'L'; if ranuni(0) lt .2 then Scholarship = 'Y'; else Scholarship = 'N'; GPA = round(rannor(0)*.5 + 3.5,.01); if GPA gt 4 then GPA = 4; ClassRank = int(ranuni(0)*60 + 41); /* the + 41 is there because of missing data (my note) */ if ranuni(0) lt .1 then call missing(ClassRank); if ranuni(0) lt .05 then call missing(SchoolSize); if ranuni(0) lt .05 then call missing(GPA); output; end; format Gender $gender1. SchoolSize $size. Scholarship $yesno.; drop i; run;
... View more