Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re[4]: st: creating a variable using -if-? programming needed?


From   Ekaterina Selezneva <eka.selez@gmail.com>
To   Nick Cox <statalist@hsphsun2.harvard.edu>
Subject   Re[4]: st: creating a variable using -if-? programming needed?
Date   Thu, 15 May 2008 19:06:03 +0200

Now it works fine! thanks again!
Eka

> The code looks good. Perhaps the data is not quite as it should be. 

> If you want to keep all the data, then you can still segregate the
> spouses. 

> In your family of 5, I guess this
>            spouse1   spouse2 
> 1             1         .
> 2             .         . 
> 3             .         3
> 4             .         .
> 5             .         . 


> gen not_spouse = !((spouse1 < .) | (spouse2 < .)) 
> bysort site family (not_spouse) : gen partner_income = personal[3 - _n]
> if !not_spouse 

> There are two states to not_spouse. not_spouse is true (1) if somebody
> is not a spouse and false (0) if somebody is. 

> Sorting on -non_spouse- within a  family sorts all the 0s to the first
> observations in each family. 

> Your set-up may differ, but something like this should still be
> workable. 

> Nick
> n.j.cox@durham.ac.uk 

> Ekaterina Selezneva

> for me your solution with "[3 - _n]" is the most elegant and most
> easily understood.

> But how to handle the situation if  I have data on all the household
> members, and let's say, I want to keep them all. I have two variables
> identifying a couple within each household: "spouse1" and "spouse2"..
> so, if
> there is a household composed of 5 members, and N1 and N3
> are married, then spouse1=1 and spouse2=3.

> I would do something like

> #delimit;
> bysort  site  censusd family : gen partner_income = personal[spouse1]
> if person==spouse2;
> bysort  site  censusd family :   replace partner_income =
> personal[spouse2] if person==spouse1;

> it works fine if both partners are present in the sample, but if only
> one is in, the partner_income variable is replaced sometimes with the
> individual
> income of the individual and sometimes with the missing value.

> What could be wrong with the code?


> Thursday, May 15, 2008, 4:24:34 PM, you wrote:

>> Using the same assumption of a Noah's ark situation in which everyone
> is
>> paired off, with no dependents, in-laws, etc., there are other minor
>> variations on Scott's theme. 

>> bysort site family: gen partner_income = cond(_n == 1, personal[2],
>> personal[1]) 

>> bysort site family: gen partner_income = personal[3 - _n]

>> I am fond of the second. If it looks puzzling, just go through the two
>> cases. If _n is 1, then 3 - _n is 2, and vice versa. 

>> The key underlying principle, if it is not familiar, is that under
> -by:-
>> _n is interpreted within groups, not within the entire dataset. There
> is
>> a leisurely tutorial 
>> at 

>> <http://www.stata-journal.com/sjpdf.html?articlenum=pr0004> 

>> N.B. this is in the public domain. 

>> Nick
>> n.j.cox@durham.ac.uk 

>> Scott Merryman

>> What defines a partner?  Someone within the same two-person family?

>> Perhaps something like this:

>> clear
>> input site family person personal_labor_income
>>  1       1            1        2000
>>  1       1            2        2300
>>  1       2            1        200
>>  1       2            3        3000
>>  2       10           4        3400
>>  2       10           5        3500
>> end

>> bysort site family : gen partner_income = cond(_n ==1,
>> personal[_n+1],personal[_n-1])

>> Ekaterina Selezneva

>>> I have a dataset with some information on a sample of married
>>>  couples. For identifying a single person, one needs to know a
>>>  "site"-number, "family"-number withing the site, and then the
>>>  "person"-number within the family. As this is a subsample of some
>>>  bigger dataset, so not all sites/families/persons are presented in
>>>  it. Let's say, something like:
>>>
>>>  site    family       person   personal_labor_income
>>>  1       1            1        2000
>>>  1       1            2        2300
>>>  1       2            1        200
>>>  1       2            3        3000
>>>  2       10           4        3400
>>>  2       10           5        3500
>>>
>>>  THE PROBLEM: I need to create a variable containing the "personal
>>>  labor income" of partner.
>>>
>>>  Unfortunately, I've spent a day, and havn't
>>>  succeded to solve this seemingly simple problem. I will be grateful
>> for
>>>  any hints.

> *
> *   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/


-- 
Best regards,
 Ekaterina                            mailto:eka.selez@gmail.com

*
*   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/



© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index