Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
st: RE: RE: Assigning sex by order of birth
From
"Nick Cox" <[email protected]>
To
<[email protected]>
Subject
st: RE: RE: Assigning sex by order of birth
Date
Sun, 14 Mar 2010 18:54:28 -0000
I don't think so. As Cinzia underlines, the first child is the oldest, so -sort family age_child- gives the wrong order.
It makes things a lot easier if you have a variable which is age negated. Alternatively, look at -gsort-.
As with Martin's toy dataset, and assuming 1 means male, 2 means female:
. gen neg_age = - age
. bysort family (neg_age) : gen boyfirst = sex[1] == 1
. bysort family (neg_age) : gen girlfirst = sex[1] == 2
. bysort family (neg_age) : gen boyfirst = sex[2] == 1
etc.
This will work fine even for one-child families as then -sex[2]- is deemed missing and the indicator will be born 0.
However, twins and any other children born in the same year as far as the survey were concerned need more code, or even better data.
Alternatively, assuming no intersex complications, -girlfirst- is just 1 - -boyfirst-, and one is redundant.
Nick
[email protected]
Martin Weiss
clear
inp byte(Family age_child sex:mylabel), auto
1 12 male
1 5 female
1 2 female
2 9 female
2 7 female
2 4 male
2 1 female
3 2 male
3 5 male
end
bys Family (age_child): gen byte Boy1st=(_n==1)*(sex==1)
by Family (age_child): gen byte Girl1st=(_n==1)*(sex==2)
by Family (age_child): gen byte Boy2nd=(_n==2)*(sex==1)
by Family (age_child): gen byte Girl2nd=(_n==2)*(sex==2)
l, sepby(Family ) noo
Cinzia Rienzo
I have some difficulties in creating variables for children in the
family accounting for their sex and order of birth; in other words I
want to create the following variables:
“Boy1st” if First child born is male;
“Girl1st” if First child born is female
“boy2nd” if Second child born is male
“girl2nd” if Second child born is female and so on.
I tried with the “egen rank” to create order using the reverse of the
age of children in families:
bysort year family: g agechil=age if member ==”child”
bysort year family: g agechil reversed= agechil*-1
bysort year serial : egen rank_var = rank(agechil reversed)
But when I Tab the rank it gives me: 1; 1.5 ; 2; 2.5; 3; 3.5…..
My question is: How can I assign the sex by order of birth in families
using the rank given that the age of first child and numbers of
children vary by families?
As in the example below the first child in family 1 is 12 year old and
the first child in family 2 is 9.
Family age of child sex
1 12 male
1 5 female
1 2 female
2 9 female
2 7 female
2 4 male
2 1 female
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/