Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Gerard Solbrig" <gsolbrig@mail.uni-mannheim.de> |
To | <statalist@hsphsun2.harvard.edu> |
Subject | RE: st: Looping within a subset under a certain condition |
Date | Sun, 30 Sep 2012 22:15:08 +0200 |
Here's what Stata says: - forvalues x = 1/`r(max)' { = forvalues x = 1/18554 { - summarize obs if firm_numid == `x' & rep == 0, meanonly = summarize obs if firm_numid == 1 & rep == 0, meanonly - local z1 = r(min) - local z2 = r(max) - summarize obs if firm_numid == `x' & rep == 1, meanonly = summarize obs if firm_numid == 1 & rep == 1, meanonly - local o1 = r(min) - local o2 = r(max) - forvalues i = `z1'/`z2' { = forvalues i = 1/106 { - local isin = 1 - forvalues o = `o1'/`o2' { = forvalues o = ./. { invalid syntax if inrange(trandate[`i'], wind_start[`o'], wind_end[`o']) { local isin = 0 } if `isin' == 1 replace rep_ins = 1 in `i' } } r(198); -----Original Message----- From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Nick Cox Sent: Sonntag, 30. September 2012 21:53 To: statalist@hsphsun2.harvard.edu Subject: Re: st: Looping within a subset under a certain condition This code refers to -date- and -trandate- at different places. gen long obs = _n was recommended earlier. Type set trace on set tracedepth 1 before running the code and see which line produces the error. On Sun, Sep 30, 2012 at 7:28 PM, Gerard Solbrig <gsolbrig@mail.uni-mannheim.de> wrote: > I'm sorry, but I've been trying for hours now: Stata yields me > "invalid syntax r(198);" every time I try to run this code: > > sort cusip6 rep date > gen obs = _n > gen rep_ins = 0 > egen firm_numid = group(cusip6) > summarize firm_numid, meanonly > forvalues x = 1/`r(max)' { > su obs if firm_numid == `x' & rep == 0, meanonly > local z1 = r(min) > local z2 = r(max) > su obs if firm_numid == `x' & rep == 1, meanonly > local o1 = r(min) > local o2 = r(max) > forvalues i = `z1'/`z2' { > local isin = 1 > forvalues o = `o1'/`o2' { > if inrange(trandate[`i'], wind_start[`o'], > wind_end[`o']) { > local isin = 0 > } > if `isin' == 1 replace rep_ins = 1 in `i' > } > } > } > > Despite countless tries and modifications, I cannot find the mistake > in the syntax. I simply don't know what is supposed to be wrong here. > I know this code should be working the way I need it... > > Many thanks in advance. > Gerard > > * * 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/