2c2 < program define scollapse --- > program define collapse 229,233d228 < tempvar numcat < by `by': egen `numcat'=count(`new`i''!=0) < di " `numcat' `new`i'' " < by `by':replace `new`i''=.s if `numcat'<$mincellsize < 789c784,804 < gen `y' = .s --- > > if `sortpreserve' { > tempvar sortpreserve > local sortvars : sortedby > gen `sortpreserve' = _n > } > > tempvar touse > quietly { > local ty : type `x' > gen byte `touse' = (`x' < .) > sort `by' `touse' `x' > if `"`by'"' != "" { > by `by': gen `ty' `y' = `x'[_N] > } > else gen `ty' `y' = `x'[_N] > } > > if `sortpreserve' { > dosortpreserve `"`sortvars'"' `"`sortpreserve'"' > } 794c809,827 < gen `y'=.s --- > > if `sortpreserve' { > tempvar sortpreserve > local sortvars : sortedby > gen `sortpreserve' = _n > } > > quietly { > local ty : type `x' > sort `by' `x' > if `"`by'"' != "" { > by `by': gen `ty' `y' = `x'[1] > } > else gen `ty' `y' = `x'[1] > } > > if `sortpreserve' { > dosortpreserve `"`sortvars'"' `"`sortpreserve'"' > } 871c904,922 < gen `y' = .s --- > > if `sortpreserve' { > tempvar sortpreserve > local sortvars : sortedby > gen `sortpreserve' = _n > } > > quietly { > local ty : type `x' > if `"`by'"' != "" { > sort `by', stable > by `by': gen `ty' `y' = `x'[1] > } > else gen `ty' `y' = `x'[1] > } > > if `sortpreserve' { > dosortpreserve `"`sortvars'"' `"`sortpreserve'"' > } 876c927,945 < gen `y' = .s --- > > if `sortpreserve' { > tempvar sortpreserve > local sortvars : sortedby > gen `sortpreserve' = _n > } > > quietly { > local ty : type `x' > if `"`by'"' != "" { > sort `by', stable > by `by': gen `ty' `y' = `x'[_N] > } > else gen `ty' `y' = `x'[_N] > } > > if `sortpreserve' { > dosortpreserve `"`sortvars'"' `"`sortpreserve'"' > }