Oleksandr Shepotylo
> I have a survey data with following variables:
>
> familyid personid inwork
> 001 01 0
> 001 02 1
> 001 03 0
> 001 04 1
> 002 01 1
> 002 02 0
>
> Inwork is indicator of labor force partisipation. I
> want to create
> variable "inworkid" that will be 0 if inwork=0 and will
> give numbers 1, 2,3
> etc otherwise. In my example:
>
> familyid personid inwork inworkid
> 001 01 0 0
> 001 02 1 1
> 001 03 0 0
> 001 04 1 2
> 002 01 1 1
> 002 02 0 0
>
> How can this be done?
bysort familyid inwork : gen inworkid = cond(inwork == 0, 0, _n)
The key to this is that _n is interpreted with reference
to each distinct group defined by the <byvarlist> of
-by <byarlist>:-. For more information, see the various
entries on -by:- in the manuals. Alternatively, one
place in which the main ideas are discussed together
is Stata Journal 2(1):86-102 (2002).
Nick
[email protected]
*
* 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/