*------------------------------------------------------------------* | Purpose: To list the 10 highest and lowest data values for | | a variable in a SAS data set using Data Step processing | | Arguments: DSN - Data set name | | VAR - Numeric variable to be checked | | IDVAR - ID variable name | | | | Example: %TEN(CLEAN.PATIENTS,HR,PATNO) | *------------------------------------------------------------------*; %MACRO TEN(DSN,VAR,IDVAR); PROC SORT DATA=&DSN(KEEP=&IDVAR &VAR WHERE=(&VAR NE .)) OUT=TMP; BY &VAR; RUN; DATA _NULL_; TITLE "Ten Highest and Ten Lowest Values for %UPCASE(&VAR)"; SET TMP NOBS=NUM_OBS; HIGH = NUM_OBS - 9; FILE PRINT; IF _N_ LE 10 THEN DO; IF _N_ = 1 THEN PUT / "Ten Lowest Values" ; PUT "&IDVAR = " &IDVAR @15 "&VAR = " &VAR; END; IF _N_ GE HIGH THEN DO; IF _N_ = HIGH THEN PUT / "Ten Highest Values" ; PUT "&IDVAR = " &IDVAR @15 "&VAR = " &VAR; END; RUN; %MEND TEN;