ch12.2.do open
file:script:do
| # | content |
|---|---|
| 1 [+] | * ITSP 12.2 - |
| 3 [+] | type _gpctrange.ado |
| 5 [+] | /* capture program drop _gpctrange *! _gpctrange v1.0.0 CFBaum 02dec2007 program _gpctrange version 10.1 syntax newvarname =/exp [if] [in] [, HI(integer 75) LO(integer 25) *] if `hi' <= `lo' | `hi' > 99 | `lo' < 1 { display as error "Percentiles `hi' `lo' invalid." error 198 } tempvar touse phi plo mark `touse' `if' `in' quietly { egen double `phi' = pctile(`exp') if `touse', `options' p(`hi') egen double `plo' = pctile(`exp') if `touse', `options' p(`lo') generate `typlist' `varlist' = `phi' - `plo' if `touse' } end */ |
| 26 [+] | sysuse auto , |
| 27 [+] | bysort rep78: egen iqr = pctrange(price) if inrange(rep78, 3, 5) |
| 28 [+] | bysort rep78: egen p8020 = pctrange(price) if inrange(rep78, 3, 5) , /// hi(80) lo(20) |
| 30 [+] | tabstat iqr if inrange(rep78, 3, 5) , |
| 31 [+] | tabstat p8020 if inrange(rep78, 3, 5) , |
* ITSP 12.2 -
type _gpctrange.ado
/*
capture program drop _gpctrange
*! _gpctrange v1.0.0 CFBaum 02dec2007
program _gpctrange
version 10.1
syntax newvarname =/exp [if] [in] [, HI(integer 75) LO(integer 25) *]
if `hi' <= `lo' | `hi' > 99 | `lo' < 1 {
display as error "Percentiles `hi' `lo' invalid."
error 198
}
tempvar touse phi plo
mark `touse' `if' `in'
quietly {
egen double `phi' = pctile(`exp') if `touse', `options' p(`hi')
egen double `plo' = pctile(`exp') if `touse', `options' p(`lo')
generate `typlist' `varlist' = `phi' - `plo' if `touse'
}
end
*/
sysuse auto, clear
bysort rep78: egen iqr = pctrange(price) if inrange(rep78, 3, 5)
bysort rep78: egen p8020 = pctrange(price) if inrange(rep78, 3, 5), ///
hi(80) lo(20)
tabstat iqr if inrange(rep78, 3, 5), by(rep78)
tabstat p8020 if inrange(rep78, 3, 5), by(rep78)