Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
Eric Booth <ebooth@ppri.tamu.edu> |

To |
"<statalist@hsphsun2.harvard.edu>" <statalist@hsphsun2.harvard.edu> |

Subject |
Re: st: Re: Storing output from a loop in only one variable |

Date |
Thu, 8 Jul 2010 16:43:43 +0000 |

<> Your description of what you want (and why) is still cryptic ... here's a guess at what you want to do: *********! webuse auto, clear foreach a in price mpg weight turn rep78 for{ egen x`a'=mean(`a') **you don't need "in" to go row by row** } su x*, mean di r(mean) **note that this is only giving you the mean of the last variable in the varlist /* From Dani: . I'm looking to create a single variable, x, that will hold all `a' outputs. Something like foreach a in {range} { gen x={output} in i i++ //or i=i+1 } */ keep x* g obs = 1==_n keep if obs==1 drop obs xpose, clear rename v1 x **you can remerge this back into your original dataset (if this really makes sense) *********! For your follow-up question, Stata doesn't understand the variable "t" as a number, you need to subscript it: ***** clear inp z y 1 0 2 0 3 0 end gen x=. gen int t=2 replace x=123 if _n==t **or** replace x =123 if _n==`=t[1]' Again, if this is still not helping, an example dataset and code is probably a good idea (for instance, what does {range} and {output} in your original example mean?) ~ Eric __ Eric A. Booth Public Policy Research Institute Texas A&M University ebooth@ppri.tamu.edu Office: +979.845.6754 On Jul 8, 2010, at 11:16 AM, Dani Tilley wrote: > Hi Eric, > > Thanks for your reply. Unfortunately, this doesn't give me what I'm looking for. > With the correction you pointed below, I get an x variable that only has the > output from the first loop on ALL its entries. I'm rather looking for a variable > that has -a- entries (the output from each loop on each line) and -N-a- missing > values. > > > Incidentally, could anyone tell me why I'm getting this error: > > gen x=. > gen int t=2 > replace x=123 in t > 't' invalid obs no > r(198); > > what is a valid obs no apart from actual integers plugged in? If I can figure > out a way to generate a variable that would not trigger this error, I can then > replace var=var+i and solve the problem I have. > > Thanks, > Dani > > > > > > > ----- Original Message ---- > > <> > > Sorry, that should be "x", not "`x'" in the line: > > >> replace x = `a' if !mi(`a') & mi(`x') > > > ~ Eric > > From: Dani Tilley <tilleydani@yahoo.com> > To: stata <statalist@hsphsun2.harvard.edu> > Sent: Thu, July 8, 2010 11:32:19 AM > Subject: Storing output from a loop in only one variable > > Hi, > > I'm trying to store certain output in a new variable while I loop through > different categories. At the end I want to average what I've stored and perhaps > do some other manipulations. Right now, my code looks like this: > > foreach a in {range} { > ... > gen x`a'={output} in 1 > ... > } > > su x*, mean > di r(mean) > drop x* > > So I create `a' variables that have the desired output as their 1st observations > > and N-1 missing points. I then average across these variables and drop them. > While this gets the job done, I feel it's very clumsy. I'm looking to create a > single variable, x, that will hold all `a' outputs. Something like > > scalar i=1 > foreach a in {range} { > ... > gen x={output} in i > i++ //or i=i+1 > } > > Thanks, > DF Tilley > > * * 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/

**References**:**st: Re: Storing output from a loop in only one variable***From:*Dani Tilley <tilleydani@yahoo.com>

- Prev by Date:
**st: input statement inside a while loop** - Next by Date:
**Re: st: RE: one-tailed tests** - Previous by thread:
**Re: st: RE: Re: Storing output from a loop in only one variable** - Next by thread:
**st: input statement inside a while loop** - Index(es):