Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

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

st: Re: calculating proportions

From   Pathmeswaran <>
Subject   st: Re: calculating proportions
Date   Tue, 21 Feb 2012 20:38:21 +0530

Hello Ekaterina,

I have developed a solution which works on the small example data set
given in Oliver Jones' response.
My code may not look very professional as I have just started using 'foreach'.
I would very much appreciate some feedback on my code.


*************** example code begins **************************

version 8
clear all
set obs 7

gen byte id = _n

gen byte sex = 1
replace sex = 0 in 4/7
label def lbl_sex 0 "male" 1 "female"
label values sex lbl_sex

gen int income = 7
replace income = 10 in 3
replace income = 0 in 4
replace income = 7 in 5
replace income = 9 in 6
replace income = 11 in 7


* I have just copied Oliver's code

sort sex
gen idm=_n if sex==0
* idm is just a unique number for each male

gen fa=.
label variable fa "Number of females with higher income"

gen fb=.
label variable fb "Number of females with lower income"

gen fe=.
label variable fe "Number of females with equal income"

* The variables fa, fb & fe are generated individually for each male
in the following loop
foreach n of numlist 1/4 {
egen int feabove = rank(income) if sex==1 | (sex==0 & idm==`n'), field
replace fa= feabove-1 if idm==`n'
drop feabove

egen int febelow = rank(income) if sex==1 | (sex==0 & idm==`n'), track
replace fb=  febelow-1 if idm==`n'
drop febelow

replace fe=3-( fa+ fb) if idm==`n'

* Converting the numbers to proportions
gen fap=fa/3
label variable fap "Proportion of females with higher income"

gen fbp=fb/3
label variable fbp "Proportion of females with lower income"

gen fep=fe/3
label variable fep "Proportion of females with equal income"

**************** example code ends ***************************
*   For searches and help try:

© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index