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 |
Robert Picard <picard@netbox.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 |
Sun, 13 Oct 2013 19:57:20 -0400 |

A simple way of doing this without a loop is to use -joinby- to form all pairwise combination of persons within a family. It's then easy to identify cases that meet the desired condition and use -collapse- to reduce to the original observations while counting the number of cases that meet the condition. Robert * ------------------ begin example -------------- clear input family person sex age 1 1 1 36 1 2 1 16 1 3 1 14 2 1 0 45 2 2 1 42 2 3 0 14 2 4 1 12 2 5 0 10 3 1 0 39 3 2 1 36 3 3 0 11 3 4 1 9 3 5 1 7 3 6 1 3 end tempfile main save "`main'" * for each person in each family, form all pairwise * combinations with other persons in the family rename (person sex age) =0 joinby family using "`main'" * identify cases that must be counted gen ncount = (sex == 1) & (age0 - age >= 10) * restore original obs while adding ncount cases collapse sex0 age0 (sum) ncount, by(family person0) list, noobs sepby(family) * ------------------ end example ---------------- On Sun, Oct 13, 2013 at 6:57 PM, 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 > > > Thank you so much!! > > Huanhuan > * > * 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/ * * 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>

- Prev by Date:
**Re: st: Time-dependent variables and the simon & makuch method** - Next by Date:
**st: develop outcome risk stratification scale** - Previous by thread:
**st: Create a new variable based on the current observation and values of other observations in the same group** - Next by thread:
**Re: st: Create a new variable based on the current observation and values of other observations in the same group** - Index(es):