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]

From |
Nick Cox <njcoxstata@gmail.com> |

To |
"statalist@hsphsun2.harvard.edu" <statalist@hsphsun2.harvard.edu> |

Subject |
Re: st: Create a new variable based on the current observation and values of other observations in the same group |

Date |
Tue, 15 Oct 2013 00:27:00 +0100 |

Another correction. If it's 10 or more years younger the code should say >= 10, not > 10. Nick njcoxstata@gmail.com On 14 October 2013 17:16, Nick Cox <njcoxstata@gmail.com> wrote: > Correction > > local imax = r(max) > Nick > njcoxstata@gmail.com > > > On 14 October 2013 16:53, Nick Cox <njcoxstata@gmail.com> wrote: >> Using the approach indicated this could be >> >> clear >> >> input id family person sex age >> 1. 1 1 1 36 >> 2. 1 2 1 16 >> 3. 1 3 1 14 >> 4. 2 1 0 45 >> 5. 2 2 1 42 >> 6. 2 3 0 14 >> 7. 2 4 1 12 >> 8. 2 5 0 10 >> 9. 3 1 0 39 >> 10. 3 2 1 36 >> 11. 3 3 0 11 >> 12. 3 4 1 9 >> 13. 3 5 1 7 >> 14. 3 6 1 3 >> end >> >> >> >> bysort family (person) : gen Person = _n >> su Person, meanonly >> local imax = r(N) >> >> gen count = 0 >> gen work = . >> >> qui forval i = 1/`imax' { >> by family: replace work = sum(sex == 1 & ((age[`i'] - age) > 10)) >> by family: replace count = work[_N] if _n == `i' >> } >> >> drop work >> list, sepby(family) >> >> The approach is in some ways awkward compared with the -joinby- and >> -collapse- magic shown by Robert Picard. >> >> But it has a certain directness as implementing >> >> initialise count = 0 >> >> foreach family member { >> count how many are sex 1 and ten years or more younger >> replace count with result for that family member >> } >> >> Note that the loop is over family membership, not observations. >> Missing ages should be watched out for. >> >> Nick >> njcoxstata@gmail.com >> >> >> On 13 October 2013 23:57, Huanhuan Shi <huanhuanshi09@gmail.com> wrote: >>> Dear Statalist, >>> >>> I have a problem which is similar to but different from this post. >>> http://www.stata.com/support/faqs/data-management/creating-variables-recording-properties/ >>> >>> I tried to modify the code suggested by Nicholas J. Cox but can not >>> figure it out. Hope I can get help from you. >>> The problem I am facing is as follows: >>> >>> First, the data structure is shown below. I have family groups and >>> individuals in each family group. >>> >>> family person sex age >>> 1. 1 1 1 36 >>> 2. 1 2 1 16 >>> 3. 1 3 1 14 >>> >>> 4. 2 1 0 45 >>> 5. 2 2 1 42 >>> 6. 2 3 0 14 >>> 7. 2 4 1 12 >>> 8. 2 5 0 10 >>> >>> 9. 3 1 0 39 >>> 10. 3 2 1 36 >>> 11. 3 3 0 11 >>> 12. 3 4 1 9 >>> 13. 3 5 1 7 >>> 14. 3 6 1 3 >>> >>> >>> What I want to do is to create a new variable "count" that count the >>> number of individual that sex is 1 and10 years younger than the >>> person within the same family. So the result should be like: >>> >>> >>> family person sex age count >>> 1. 1 1 1 36 2 >>> 2. 1 2 1 16 0 >>> 3. 1 3 1 14 0 >>> >>> 4. 2 1 0 45 1 >>> 5. 2 2 1 42 1 >>> 6. 2 3 0 14 0 >>> 7. 2 4 1 12 0 >>> 8. 2 5 0 10 0 >>> >>> 9. 3 1 0 39 3 >>> 10. 3 2 1 36 3 >>> 11. 3 3 0 11 0 >>> 12. 3 4 1 9 0 >>> 13. 3 5 1 7 0 >>> 14. 3 6 1 3 0 >>> * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/

**References**:**st: Create a new variable based on the current observation and values of other observations in the same group***From:*Huanhuan Shi <huanhuanshi09@gmail.com>

**Re: st: Create a new variable based on the current observation and values of other observations in the same group***From:*Nick Cox <njcoxstata@gmail.com>

**Re: st: Create a new variable based on the current observation and values of other observations in the same group***From:*Nick Cox <njcoxstata@gmail.com>

- Prev by Date:
**Re: st: RE: updated package -binscatter- in SSC** - Next by Date:
**Re: st: Negative probabilities after a margins command for a categorical variable (post logistic model).** - Previous by thread:
- Next by thread:
**st: RE: Create a new variable based on the current observation and values of other observations in the same group** - Index(es):