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   "Francis, Richard N" <[email protected]>
To   "[email protected]" <[email protected]>
Subject   RE: st: FORVAL loop incomplete
Date   Sat, 9 Nov 2013 17:34:27 +0000

Sergiy,

APPEND is probably used inappropriately.

Goal is to create new variables, instead of new observations.

Think APPEND creates new obs.  So, better rethink that idea.

Thanks again!!!!

Rick Francis

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Sergiy Radyakin
Sent: Saturday, November 09, 2013 10:24 AM
To: [email protected]
Subject: Re: st: FORVAL loop incomplete

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/

*
*   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