qui su Cat_id /* find out how many dummies to create */
local max=1+int(ln(r(max))/ln(2))
tempname id
cap gen `id'=Cat_id
forval x = `max'(-1)1 {
gen byte Cat`x' = ((`id'-mod(`id',`x'))>0)
replace `id'=`id'-mod(`id',`x')
}
The above code may also be adapted (with some work)
to decode an ID variable that encodes a series of
categorical variables with arbitrary integer codes,
in the form Cat_id=2^Cat1*3^Cat2*5^Cat3...*primeX^CatX
-----Original Message-----
> Cat_id Cat4 Cat3 Cat2 Cat1
> 1 0 0 0 1
> ...
> 10 1 0 1 0
> 11 0 0 1 1
**note the last line is inconsistent with the stated problem, and should
read
**11 1 0 1 1
-----Original Message-----
**The following, due to Neil Shephard, only works for Cat_id in [0,4]
forval x = 1/4{
gen Cat`x' = cond(Cat_id == `x', 1,0)
}
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/