SAS (Base SAS)+
data CLASS;
infile datalines dlm='|' dsd missover;
input Name : $8. Sex : $1. Age : best32. Height : best32. Weight : best32.;
label ;
format ;
datalines4;
Alfred|M|14|69|112.5
Alice|F|13|56.5|84
Barbara|F|13|65.3|98
Carol|F|14|62.8|102.5
Henry|M|14|63.5|102.5
James|M|12|57.3|83
Jane|F|12|59.8|84.5
Janet|F|15|62.5|112.5
Jeffrey|M|13|62.5|84
John|M|12|59|99.5
Joyce|F|11|51.3|50.5
Judy|F|14|64.3|90
Louise|F|12|56.3|77
Mary|F|15|66.5|112
Philip|M|16|72|150
Robert|M|12|64.8|128
Ronald|M|15|67|133
Thomas|M|11|57.5|85
William|M|15|66.5|112
;;;;
run;
*------------------------------------------------------------------------------;
*subset of highest height;
*------------------------------------------------------------------------------;
proc sort data=class;
by sex height;
run;
data highestheight;
set class;
by sex height;
if last.sex;
keep sex height name;
run;- In SAS,
last.varis the automatic flag that turns TRUE on the last row of each group, once the dataset is sorted and the variable is named in abystatement. proc sort data=class; by sex height;sorts ascending by Sex then Height, so within each Sex the tallest subject sits at the bottom of the group.- In the DATA step,
set class; by sex height;reads the sorted data and exposesfirst.sex/last.sex/first.height/last.height. if last.sex;on its own line is a subsetting IF — only rows where that flag is TRUE are written out.keep sex height name;trims the output to the columns the report needs.- After running, HIGHESTHEIGHT has one row per Sex with the tallest subject; confirm the Name column lists the expected subjects.