|
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: RE: Panel Data Programing issues with apologies
The FAQ
<http://www.stata.com/support/faqs/data/members.html>
has a section on "7. Mapping from arbitrary identifiers to integers 1
and above" which may help here.
Nick
[email protected]
philippe van kerm replied to Jeremy Page
<SNIP>
> I am working with a panel data set which has identifiers by
> household
> (hhid) and individual (id). I am trying to get information about
> the
> mothers education, which is located in the parents row, into
> children's row. I figured out how to do this as long as there is
> only one mother in each household. The problem is there are some
> households with more than one mother per household. "momid"
> indicates
> which id is the mother in the household and is a number between 3
> and
> 19
>
> hhid id edu momid (Want mom edu)
> 1 1 4 0 .
> 1 2 0 0 .
> 1 3 6 5 3
> 1 4 8 5 3
> 1 5 3 0 .
> 1 6 2 3 6
> 1 7 4 3 6
In this particular example, where 'id' is consecutively numbered 1,2,3..
within each household, there is an easy solution:
bys hhid (id): gen momedu = edu[momid] if momid>0
This works whenever 'id' is equal to _n (within each 'hhid') after you
sort on hhid id.
Now, in a more general case, where 'id' may not be related to '_n', I
believe that it is easier to "merge the dataset on itself":
preserve
// generate a file of 'mothers'
tempfile a
keep hhid id edu
rename id momid
rename edu momedu
sort hhid momid
save `a' , replace
restore
// then merge the mothers to the children
sort hhid momid
merge hhid momid using `a' , nokeep uniqusing
sort hhid id
drop _merge
I would be curious to see a way to do it with explicit subscripting,
however.
*
* 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/