*! version 2.0.0 PR 27oct2014 program define ptrendi /* chisq for trend, based on Stata tabi.ado */ version 8.0 tokenize "`*'", parse(",\ ") local r 1 local c 1 local cols . while ("`1'"!="" & "`1'"!=",") { if "`1'"=="\" { local ++r if `cols'==. { if `c' <= 2 { di as err "too few columns" exit 198 } local cols `c' } else { if (`c'!=`cols') error 198 } local c 1 } else { if `c' < 3 { confirm integer num `1' if (`1' < 0) error 411 } else { confirm num `1' } local n`r'`c' `1' local ++c } mac shift } if (`c'!=`cols') error 198 local --cols if (`cols'!=3) error 198 local rows = `r' /* !! replacing next few lines, to conform with !! standard `immediate command' operation. local options "REPLACE *" parse "`*'" if "`replace'"=="" & _N!=0 { preserve } capture { */ tokenize "`*'" preserve quietly { drop _all set obs `rows' gen long r = . gen long nr = . gen x = . forvalues r = 1/`rows' { forvalues c = 1/`cols' { if (`c'==1) replace r = `n`r'`c'' in `r' else if (`c'==2) replace nr = `n`r'`c'' in `r' else if (`c'==3) replace x = `n`r'`c'' in `r' } } gen _prop = r / (r + nr) format _prop %8.3f format r %8.0f format nr %8.0f format x %8.2f } /* Trend calculation. */ ptrend r nr x _prop end