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: RE: Foreach loop for subsequent variables


From   Dmitriy Glumov <[email protected]>
To   [email protected]
Subject   Re: st: RE: Foreach loop for subsequent variables
Date   Tue, 1 Nov 2011 12:32:01 -0400

Sorry for not including the code in the previous message, here it is:

forvalues i = 1(2)897 {
         preserve
         local j = `i' +1
	keep `i' `j'
	save `i'2
	restore
	}

And Stata's error message:

1 invalid name
r(198);

end of do-file

I am trying to save variables 1 and 2 together as a separate file,
variables 3 and 4 together as another separate file, and so on. This
process can be done by hand but it would be very time-consuming (there
are 898 variables) - and, that's why I am trying to write a loop for
Stata do it automatically. If naming is an issue, all variables have
different names (they are not named var1, var2, etc, but are rather
named using first 4 letters of a company name). Again, thank you for
the help and if anyone can share a solution or approach that is
appropriate for this situation, it would be greatly appreciated.

Dmitriy

On Tue, Nov 1, 2011 at 11:54 AM, Nick Cox <[email protected]> wrote:
> I can't see your code from here. I guess you are confusing i (letter i) with 1 (number 1). If that is not the answer, you need to show us your code.
>
> Nick
> [email protected]
>
> Dmitriy Glumov
>
> Thank you for your response. When I run forval as you suggested, I get
> the error message (r 198) saying that "1" is an invalid name (I
> believe this message refers to the very first 1 in the program). I am
> not exactly sure why this message appears (if it helps, I work with
> Stata 11), as other online examples that use the same context appear
> to work. Again, thank you for your help and it would be greatly
> appreciated if you or anyone else can help with this error.
>
> On Tue, Nov 1, 2011 at 10:56 AM, Nick Cox <[email protected]> wrote:
>
>> Let's suppose your variables run var1 ... var42 so that the last pair is var41-var42.
>>
>> Then first I would use -forvalues- here. It is easier and a smidgen faster.
>>
>> forval i = 1(2)41 {
>>
>>        local j = `i' + 1
>>        <whatever> var`i' var`j'
>>
>> }
>>
>> You can also go
>>
>> forval i = 1(2)41 {
>>
>>        <whatever> var`i' var`=`i'+1'
>>
>> }
>>
>> See [U] 18.3.8 and -help macro-.
>>
>> Nick
>> [email protected]
>>
>> Dmitriy Glumov
>>
>> I have recently begun to use Stata and have run into the problem
>> writing a foreach loop. I have a large dataset of variables, paired in
>> a way that var1 and var2 are together, var3 and var4 are together, and
>> so on. I am writing a foreach loop for each individual odd variable
>> and, everytime the program loops, I need to include a subsequent even
>> variable as well. So, for example, given that var1 is `x', I need to
>> include var2 into the program, too (in essence, `x' + 1). The problem
>> doesn't seem to be very difficult, and I am sure there is a simple
>> solution to it, but I just can't find it anywhere. Thank you for your
>> consideration, any help would be greatly appreciated!
>
> *
> *   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/
>

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


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