*! version 1.0.0 NJC 4 August 1999 [STB-51: dm72] * track rank: lowest is rank 1 and e.g. 1,1,1,4,5 if three tie for 1st program define _grankt version 6 syntax newvarname =/exp [if] [in] [, BY(varlist)] tempvar GRV quietly { gen double `GRV' = `exp' `if' `in' if "`by'" == "" { sort `GRV' gen `typlist' `varlist' = _n if `GRV' != . replace `varlist' = `varlist'[_n-1] /* */ if `GRV' != . & `GRV' == `GRV'[_n-1] label var `varlist' "Rank of `exp'" exit } sort `by' `GRV' by `by': gen `typlist' `varlist' = _n if `GRV' != . by `by': replace `varlist' = `varlist'[_n-1] /* */ if `GRV' != . & `GRV' == `GRV'[_n-1] label var `varlist' "Rank of `exp' by `by'" } end