Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: RE: RE: Assigning sex by order of birth

From   "Nick Cox" <>
To   <>
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


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. 


Martin Weiss


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

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:

© Copyright 1996–2016 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index