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]
Re: st: Generating dummy variable with information of household survey from different observations
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: Generating dummy variable with information of household survey from different observations
Date
Mon, 7 May 2012 08:57:44 +0100
For a lengthy discussion of such problems, see
FAQ . . Creating variables recording prop. of the other members of a group
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox
4/05 How do I create variables summarizing for each
individual properties of the other members of a
group?
http://www.stata.com/support/faqs/data/members.html
and also
FAQ . . Creating variables recording whether any or all possess some char.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox
2/03 How do I create a variable recording whether any
members of a group (or all members of a group)
possess some characteristic?
http://www.stata.com/support/faqs/data/anyall.html
You need to loop over all the individuals in each family. That will be
a loop over all the individuals, but can be specified in terms of
-individual_id-
clear
inp household_id individual_id father_row
1011 1 .
1011 2 .
1011 3 1
1011 4 1
1012 1 2
1012 2 .
1013 1 .
1013 2 .
1013 3 2
1013 4 1
1013 5 1
end
gen father = 0
su individual_id, meanonly
qui forval i = 1/`r(max)' {
egen work = max(father_row == `i'), by(household_id)
replace father = 1 if individual_id == `i' & work == 1
drop work
}
l
Nick
On Mon, May 7, 2012 at 7:13 AM, Sumiko Hayasaka <[email protected]> wrote:
> Thanks Eric!
>
> Everything works out until I get to the "foreach" command. It says the
> expression is too long [r(130)]. What should I do?
On Sun, May 6, 2012 at 11:44 PM, Eric Booth <[email protected]> wrote:
>> clear
>> inp household_id individual_id father_row
>> 1011 1 .
>> 1011 2 .
>> 1011 3 1
>> 1011 4 1
>>
>> 1012 1 2
>> 1012 2 .
>>
>> 1013 1 .
>> 1013 2 .
>> 1013 3 2
>> 1013 4 1
>> 1013 5 1
>> end
>>
>>
>> levelsof individual_id, loc(a)
>> reshape wide father_row, i(household_id) j(individual_id)
>> ds father_row*
>> loc checklist `r(varlist)'
>> loc checklist:subinstr loc checklist " " ", " , all
>> foreach n in `a' {
>> g father`n' = cond(inlist(`n', `checklist'), 1, 0, .)
>> }
>> reshape long father_row father, i(household_id) j(individual_id)
>>
On May 6, 2012, at 10:34 PM, Sumiko Hayasaka wrote:
>>> I am trying to generate a dummy variable, with information from a
>>> household survey, which can tell if a member of the household is a
>>> father or not. I have a household id, an individual id (per
>>> household), and a variable that tells me which individual id is marked
>>> as being a father (members of the family are asked if their father
>>> lives in the household and to give their father's individual id).
>>> Therefore, I need to assign a 1 at the row in which someone at the
>>> household said that was a father. To illustrate this, the data is
>>> something like this (I am trying to get the "father" variable):
>>>
>>> household_id individual_id father_row father
>>> ------------------------------------------------------------------------
>>> 1011 1 . 1
>>> 1011 2 . 0
>>> 1011 3 1 0
>>> 1011 4 1 0
>>>
>>> 1012 1 2 0
>>> 1012 2 . 1
>>>
>>> 1013 1 . 1
>>> 1013 2 . 1
>>> 1013 3 2 0
>>> 1013 4 1 0
>>> 1013 5 1 0
>>>
>>>
>>> So, for example, members number 3 and 4 of household number 1011
>>> stated that their father is individual number 1 in that household.
>>> This means that I have to put the 1 of "father" (meaning the household
>>> member is a father) at the row where father_row indicates (no matter
>>> how many times this is done).
>>>
*
* 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/