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

From |
"Nick Cox" <n.j.cox@durham.ac.uk> |

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

Subject |
RE: st: RE: programming problem |

Date |
Thu, 16 Aug 2007 22:37:04 +0100 |

This problem is, in my view, an awkward little challenge. I very nearly posted a solution that was _quite_ wrong. A -reshape- solution, as exemplified by Sebastian's code, looks awkward for just this problem, but may of course be a good idea for a variety of other problems. A quite different idea runs like this: egen history = concat(var1-var12) gen byte mycond = substr(history, month, 1) == "1" The appearance here of avoiding a loop over variables is illusory, as a loop is hidden inside -concat()- (and even as of Stata 10 it is still a -while- loop). But a concatenated history makes some other problems easy, even with this wide data structure. Has this person experienced a spell of three or more months with this condition? gen byte spell3 = strpos(history, "111") > 0 When was the first month in the year with this condition? gen byte first = strpos(history, "1") When was the last month in the year with this condition? gen byte first = cond(first, 13 - strpos(reverse(history), "1"), 0) Nick n.j.cox@durham.ac.uk Jeph Herrin > Duh. > > I had done this: > > forval j = 1/12 { > replace mycond = `j' == month & var`j' == 1 > } > > Which effectively only tests month 12, before I veered > off in another direction. Nick Cox > > Short of a solution using -reshape-, I think > > this will suit: > > > > gen mycond = 0 > > forval j = 1/12 { > > replace mycond = 1 if `j' == month & var`j' == 1 > > } > > > > where I assume that your -var*- are 1 when true. Jeph Herrin > >> I have observations on patient admissions over > >> a 12 month period. > >> > >> For each observation, I have 12 variables, call > >> them var1-var12, which indicate whether a certain > >> condition was met for that patient for months 1-12. > >> So, eg, it may be true for months 1-3 and 7-12. > >> > >> I also have a variable -month-, which indicates > >> the current month of the observed admission. What > >> I want to capture is whether the condition was true > >> in the month of admission. > >> > >> For instance, at first I unthinkingly tried this: > >> > >> gen mycond = var`=month'==1 > >> > >> but this of course uses the first observed value > >> of -month-, which happens to be 6, and only checks > >> -var6-. > >> > >> I eventually got there by creating lots of vars, but is > >> there a more direct solution? * * 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/

**Follow-Ups**:**Re: st: RE: programming problem***From:*Jeph Herrin <junk@spandrel.net>

**References**:**Re: st: RE: programming problem***From:*Jeph Herrin <jherrin@flyingbuttress.net>

- Prev by Date:
**Re: st: Draw new variable with fixed correlation to an existing variable** - Next by Date:
**st: RE: Effect size and Power for the difference between means** - Previous by thread:
**Re: st: RE: programming problem** - Next by thread:
**Re: st: RE: programming problem** - Index(es):

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