Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Nick Cox <njcoxstata@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: foreach and forvalues combined |
Date | Wed, 4 Jul 2012 15:19:37 +0100 |
Regardless of whether you are right, the first problem Stata will see is that foreach i of sizep5 1/5 is not a legal syntax for -foreach-. Look again at the help. It seems that what you want is just foreach i of num 1/5 or (even simpler) forval i = 1/5 Your inner loop seems unnecessary, as you would do the same thing regardless of which year it was. Also is 1975/2012 what you intend rather than 1976/2012? More fundamentally, I doubt that even when you fix the Stata syntax you will get what you want. My hunch is that you want to classify firms according to what they were in 1975, and then spread the classification to other years, but if so you won't do it like this. Also, it seems odd that you keep no (apparent) track here of company identifiers. However, I won't try to guess what you want, not least because I could be quite wrong. Nevertheless our problem is disentangling what you want from your mistakes in Stata syntax. So my advice is to set your syntax aside and show us a simple realistic example of what the data look like now and what you want to get. On Wed, Jul 4, 2012 at 3:02 PM, "Fabian Schönenberger" <sch.f@gmx.ch> wrote: > I am facing the following challenge with my panel data while trying the form different portfolios (double ranking with size and BM-ratio). After generating the variable sizebm5 with: > > generate sizebmp5=11 if bm<bm4 & sizep5==1 & timeyear==1975 > > I want to loop the conditions sizep5== and timeyear==. Sizep5 is a variable consisting of numbers from 1 to 5 (1 small companies, 5 large companies). Timeyear is the time variable, 1975 to 2012. I am trying the following: > > > . foreach i of sizep5 1/5 { > 2. forvalues t = 1975/2012 { > 3. replace sizebmp5=1`i' if bm<bm4 & sizep5==`i' & timeyear==`t' > 4. } > 5. } > > However Stata says invalid syntax. I guess the problem is with sizebmp5=1`i' -> 1 stands for the first condition bm<bm4 (I will change this condition manually and then switch to 2 and so on). With `i' I want the variable signalling the corresponding sizep5 portfolio. Because this variable changes from 1 to 5, I need the term `i'; I also tried 1_`i' but it did not work. > * * 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/