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 |

Subject |
Re: st: Finding patterns of consecutive number |

Date |
Thu, 26 Apr 2012 02:24:04 +0100 |

I think of your problem as defining spells of consecutive integers, so that a spell starts with the first observation in each panel or if the previous value was not one fewer. bysort id (year) : gen progress = string(test) if _n == 1 | (test - test[_n-1] != 1) by id : replace progress = progress[_n-1] + string(test) if missing(progress) Dealing with spells: see also -tsspell- (SSC) or SJ-7-2 dm0029 . . . . . . . . . . . . . . Speaking Stata: Identifying spells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N. J. Cox Q2/07 SJ 7(2):249--265 (no commands) shows how to handle spells with complete control over spell specification By the way, as the putative author of -tostring-, I note that it is overkill here. The -string()- function is all you need. Nick On Wed, Apr 25, 2012 at 11:47 PM, Marshall Garland <marshall.w.garland@gmail.com> wrote: > I have panel student testing data spanning six years. Each year, I > have a unique student and student test level and outcome. Testing > levels across years are not necessarily consecutive, nor are years. > For each student, in each year, I'd like to create a variable that > captures the longitudinal test progression for each student, in each > year. However, for each year, I'd like the maximum consecutive test > progression, without disruptions. This maximum test progression should > only be calculated for consecutive years, too. > > I've posted my data at the end of this message, which will help > describe my objective. For student A, in 2008/09, her test progression > is 6543, since she had 4 consecutive years of test data. This is > perfect. Student B, however, in 2008/09, has a test progression of > 7643. However, I only want to record, for student B, the maximum > consecutive test progression, which is 76 and ignore the 43. The 43 > progression will be captured in the corresponding year (2006/07). > > I can't figure out a way to adjust for this discontinuity. I've tried > a number of things, including this. But, this still captures repeated > test levels across years (student C below, in 2008/09). > > Thanks for help in advance. > > Cheers, > > -mwg > > /**************************************************** > bys research_id: gen test_t=d.test_level_2 > bys research_id: egen max_test_t=max(test_t) > > ///group creation for consecutive runs > forvalues i=0/6 { > gen group_`i'=. > bys research_i (sch_yr): replace group_`i'=test_level_2[_n-`i'] if > max_test_t==1 & test_t==1 > tostring group_`i', replace > replace group_`i'="" if group_`i'=="." > } > > egen group_ty_cons=concat(group_0- group_6) > tab group_ty_cons > /************************************************************** > > Here's my data: > student year test_level progression > A 2005/06 3 > A 2006/07 4 43 > A 2007/08 5 543 > A 2008/09 6 6543 > B 2005/06 3 > B 2006/07 4 43 > B 2007/08 6 643 > B 2008/09 7 7643 > C 2005/06 6 > C 2006/07 7 76 > C 2007/08 8 876 > C 2008/09 8 8876 * * 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/

**Follow-Ups**:**Re: st: Finding patterns of consecutive number***From:*Marshall Garland <marshall.w.garland@gmail.com>

**References**:**st: Finding patterns of consecutive number***From:*Marshall Garland <marshall.w.garland@gmail.com>

- Prev by Date:
**Re: st: RE: creating group property in a panel data** - Next by Date:
**Re: st: Finding patterns of consecutive number** - Previous by thread:
**st: Finding patterns of consecutive number** - Next by thread:
**Re: st: Finding patterns of consecutive number** - Index(es):