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" <statalist@hsphsun2.harvard.edu> |
Subject | Re: st: FORVAL loop incomplete |
Date | Sat, 9 Nov 2013 17:57:21 +0000 |
An earlier thread established that -sroot- (SJ) does not support -if- correctly. That's the entire point of the work-around being used here. Nick njcoxstata@gmail.com On 9 November 2013 17:52, William Buchanan <william@williambuchanan.net> wrote: > Hi Rick, > > I've adjusted some of your code below based on the information that you've provided to the listserv: > > destring gvkey, replace > > encode gvkey, gen(id) > > gen date = yq(year, fqtr) > > tsset id date, quarterly > > g Z14 = . > g Z24 = . > g Z34 = . > g Z4t = . > g Z3t = . > g Z2t = . > g Z1t = . > > su id, meanonly > > forval i = 1/3 { > sroot fcf if id==`i' > replace Z14 = r(Z14) if id== `i' > replace Z24 = r(Z24) if id== `i' > replace Z34 = r(Z34) if id== `i' > replace Z4t = r(Z4t) if id==`i' > replace Z3t = r(Z3t) if id==`i' > replace Z2t = r(Z2t) if id== `i' > replace Z1t = r(Z1t) if id== `i' > } > > You could also take Sergiy's suggestion and store everything in matrices, and if you wanted you could easily modify the user-written program around line 306 to store all of the values in a matrix that you could return in the same way as the scalars that you are referencing here. If you wanted to create a new dataset based on the results, you could possibly modify the program to make it byable and use -statsby-, or you could check out -post- and -postfile- commands to store the results to another file. > > HTH, > Billy > On Nov 9, 2013, at 10:41 AM, "Francis, Richard N" <rnfrancis@utep.edu> wrote: > >> Hi Sergiy, >> >> Thank you for taking time out of your day for such a novice issue. >> >> The entire pgm looks like this: >> >> >> destring gvkey, replace >> >> egen id = group(gvkey), label >> >> gen date = yq(year, fqtr) >> >> tsset id date, quarterly >> >> su id, meanonly >> >> g Z14 = . >> g Z24 = . >> g Z34 = . >> g Z4t = . >> g Z3t = . >> g Z2t = . >> g Z1t = . >> >> forval i = 1/`r(max)' { >> preserve >> keep if id == `i' >> sroot fcf >> return list >> ereturn list >> replace Z14 = r(Z14) in `i' >> replace Z24 = r(Z24) in `i' >> replace Z34 = r(Z34) in `i' >> replace Z4t = r(Z4t) in `i' >> replace Z3t = r(Z3t) in `i' >> replace Z2t = r(Z2t) in `i' >> replace Z1t = r(Z1t) in `i' >> append using new >> restore >> } >> >> R(max) immediately prior to the FORVAL loop is three (3), but I'm not sure this is what you are looking for in your first comment. >> >> Does this help at all? >> >> Again, thank you! >> >> Rick Francis >> >> -----Original Message----- >> From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Sergiy Radyakin >> Sent: Saturday, November 09, 2013 9:28 AM >> To: statalist@hsphsun2.harvard.edu >> Subject: Re: st: FORVAL loop incomplete >> >> Rick, >> 1) N may be 180, but what is r(max)? In Stata r(max) is the result of the previous command [of r-class]. You don't show us this command. >> Please do. >> 2) The combination of "append using new" and "restore" does not make sense, Whatever you append you immediately lose. >> 3) If append is meant to add one observation where you are saving the results (dataset new is a blank one observation of the same layout as the current dataset), consider using: expand in _N >> 4) If you want to accumulate the results of your tests, consider using a matrix to hold the results, and avoid modifying the data. >> Best, Sergiy >> >> On Sat, Nov 9, 2013 at 8:14 AM, Francis, Richard N <rnfrancis@utep.edu> wrote: >>> I'm sorry, N = 180 obs, currently cycles through the first 60 (3 groups of 60 =180 total obs). >>> >>> Thank you!! >>> >>> Rick Francis >>> >>> -----Original Message----- >>> From: owner-statalist@hsphsun2.harvard.edu >>> [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Nick Cox >>> Sent: Saturday, November 09, 2013 9:08 AM >>> To: statalist@hsphsun2.harvard.edu >>> Subject: Re: st: FORVAL loop incomplete >>> >>> Tell us what r(max) is. >>> Nick >>> njcoxstata@gmail.com >>> >>> >>> On 9 November 2013 15:53, Francis, Richard N <rnfrancis@utep.edu> wrote: >>>> Hello Statalist, >>>> >>>> Have a simple FORVAL loop which should result in multiple cycles. >>>> >>>> However, she only cycles once. I'm sure the answer is obvious to experienced Stata users (which I am not). >>>> >>>> The loop is as follows: >>>> >>>> >>>> forval i = 1/`r(max)' { >>>> preserve >>>> keep if id == `i' >>>> sroot fcf >>>> return list >>>> ereturn list >>>> replace Z14 = r(Z14) in `i' >>>> replace Z24 = r(Z24) in `i' >>>> replace Z34 = r(Z34) in `i' >>>> replace Z4t = r(Z4t) in `i' >>>> replace Z3t = r(Z3t) in `i' >>>> replace Z2t = r(Z2t) in `i' >>>> replace Z1t = r(Z1t) in `i' >>>> append using new >>>> restore >>>> } >>>> >>>> I am grateful for any thoughts anyone may have. >>>> >>>> Thank you!! >>>> >>>> Rick Francis >>>> >>>> * >>>> * 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/ >>> >>> * >>> * 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/ >> >> * >> * 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/ * * 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/