*---------------------------------------------------------------* | Program Name: HILOWPER.SAS in C:\CLEANING | | Purpose: To list the n percent highest and lowest values for | | a selected variable. | | Arguments: DSN - Data set name | | VAR - Numeric variable to test | | PERCENT - Upper and Lower percentile cutoff | | IDVAR - ID variable to print in the report | | Example: %HILOWPER(CLEAN.PATIENTS,SBP,20,PATNO) | *---------------------------------------------------------------*; %MACRO HILOWPER(DSN,VAR,PERCENT,IDVAR); ***Compute upper percentile cutoff; %LET UP_PER = %EVAL(100 - &PERCENT); PROC UNIVARIATE DATA=&DSN NOPRINT; VAR &VAR; ID &IDVAR; OUTPUT OUT=TMP PCTLPTS=&PERCENT &UP_PER PCTLPRE = L_; RUN; DATA HILO; SET &DSN(KEEP=&IDVAR &VAR); IF _N_ = 1 THEN SET TMP; IF &VAR LE L_&PERCENT THEN DO; RANGE = 'LOW '; OUTPUT; END; ELSE IF &VAR GE L_&UP_PER THEN DO; RANGE = 'HIGH'; OUTPUT; END; RUN; PROC SORT DATA=HILO(WHERE=(&VAR NE .)); BY DESCENDING RANGE &VAR; RUN; PROC PRINT DATA=HILO; TITLE "Low And High Values For Variables"; ID &IDVAR; VAR RANGE &VAR; RUN; PROC DATASETS LIBRARY=WORK NOLIST; DELETE TMP; DELETE HILO; RUN; QUIT; %MEND HILOWPER ;