program def modes *! NJC 1.2.0 15 June 1999 STB-50 sg113 * NJC 1.1.2 23 December 1998 * NJC 1.1.1 29 October 1998 version 6.0 syntax varname [if] [in] [fweight aweight/] [ , Min(int 0) ] tempvar freq marksample touse, strok sort `touse' `varlist' if "`exp'" == "" { local exp = 1 } qui by `touse' `varlist' : gen double `freq' = sum(`exp') * `touse' qui by `touse' `varlist' : replace `freq' = `freq'[_N] label var `freq' "Frequency" su `freq', meanonly local max = r(max) if `min' > 0 { local which "`freq' >= `min'" } else { local which "`freq' == `max'" } qui count if `which' if r(N) == 0 { di in r "no such modes in data" exit 498 } qui tab `varlist' if `which' if r(r) > 1 { local s "s" } di _n in g "Mode`s' of `varlist'" tabdisp `varlist' if `which', c(`freq') end