Bookmark and Share

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]

Re: st: FORVAL loop incomplete


From   Sergiy Radyakin <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: FORVAL loop incomplete
Date   Sat, 9 Nov 2013 09:24:29 -0800

upps, sorry I overlooked in #2 above that fcf is a variable name in
your case, not a command, but sroot also supports an if modifier, see
here:
http://www.stata-journal.com/sjpdf.html?articlenum=st0172

Try the following loop:

local limit=r(max)
forval i = 1/`limit' {
    display "Iteration `i' of `limit'"
    sroot fcf if id==`i'
    matrix Zi=r(Z14),r(Z24),r(Z34),r(Z4t),r(Z3t),r(Z2t),r(Z1t)
    matrix Z=nullmat(Z)\Zi
}

matrix list Z

-----------------
I still don't understand what -append- was supposed to do in the
original program :(

Sergiy Radyakin


On Sat, Nov 9, 2013 at 9:12 AM, Sergiy Radyakin <[email protected]> wrote:
> Rick
>
> 1) your original email mentions that the loop only runs once. Now we
> know that the r(max) is
> equal to 3 so we expect the loop to have three iterations. The only
> way it can do 1 iteration
> is if it breaks with an error. To avoid any confusion do the following
> adjustment:
>
> ...
> local limit=r(max)
> forval i=1/`limit' {
>    display "This is iteration `i' of `limit'"
> ...
>
> 2) Do you use fcf from here?
> https://www.uni-goettingen.de/en/199539.html
> If yes, note that it supports if condition. Instead of your "keep if
> id==.." you can write "fcf if id==.."
>
> 3) Your i need to have a meaning. It is either ID or observation
> number. This is not necessarily the same. It is definitely not the
> same if you have multiple observations of the same subjects, which I
> assume you do, since you have time series. This is hugely incompatible
> with the -keep- statement, since it also affects the observation
> number and hence the working of -in- modifier.
>
> 4) Whatever results you save with -replace- will be lost after you -restore-.
>
> 5) Make sure you understand how -append- works. It appends data to
> memory from file, not the other way around. If you intend to save
> results to file at each iteration look at postfile.
>
> Sergiy
>
>
> On Sat, Nov 9, 2013 at 8:41 AM, Francis, Richard N <[email protected]> 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: [email protected] [mailto:[email protected]] On Behalf Of Sergiy Radyakin
>> Sent: Saturday, November 09, 2013 9:28 AM
>> To: [email protected]
>> 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 <[email protected]> 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: [email protected]
>>> [mailto:[email protected]] On Behalf Of Nick Cox
>>> Sent: Saturday, November 09, 2013 9:08 AM
>>> To: [email protected]
>>> Subject: Re: st: FORVAL loop incomplete
>>>
>>> Tell us what r(max) is.
>>> Nick
>>> [email protected]
>>>
>>>
>>> On 9 November 2013 15:53, Francis, Richard N <[email protected]> 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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index