Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: AW: RE: Stop looping when reaching a certain observation

 From Steve Samuels To statalist@hsphsun2.harvard.edu Subject Re: st: AW: RE: Stop looping when reaching a certain observation Date Sun, 18 Apr 2010 19:42:10 -0400

```I'm sure that there are better ways, but:

***************
sysuse auto, clear
list mpg make in 1/8
gen index = _n if  make=="Buick Opel"
egen mindex = min(index)
gen run_mean = sum(mpg)/_n if _n<=mindex
list mpg make run_mean in 1/8
replace run_mean = run_mean[mindex]
list mindex run_mean in 1

***************************
Of course you can delete the first two -list- statements

Steve
sysuse auto, clear
gen avg = sum(kv)/_n if

On Sun, Apr 18, 2010 at 5:06 PM, George Chioran
<george_chioran@yahoo.com> wrote:
> Thank you for the insights they are useful.
> However, that does not solve my problem. I need to do the average price until a V is encountered and then stop, not just exclude the V's.
> Maybe a way of achieving this would be to drop all the observations after a V is encountered, and then simply do the average.
> Does anyone know how to drop all the data after a certain observation? Or maybe segment the data  into different files according to the V's?
>
>
> ________________________________
> From: Martin Weiss <martin.weiss1@gmx.de>
> To: statalist@hsphsun2.harvard.edu
> Sent: Sun, April 18, 2010 6:31:30 PM
> Subject: st: AW: RE: Stop looping when reaching a certain observation
>
>
> <>
>
> If ever you wanted Stata to stop calculating means when it sees a "V" in
> "kv", you could of course condition Nick`s call as -egen ssmean =
> mean(price) if kv!="V", by(ss)-
>
> HTH
> Martin
>
>
> -----Ursprüngliche Nachricht-----
> Von: owner-statalist@hsphsun2.harvard.edu
> [mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Nick Cox
> Gesendet: Sonntag, 18. April 2010 18:18
> An: statalist@hsphsun2.harvard.edu
> Betreff: st: RE: Stop looping when reaching a certain observation
>
> There is absolutely no need to loop to solve your problem, of
> calculating means by company.
>
> egen ssmean = mean(price), by(ss)
>
> or
>
> using -table- or -tabstat-
>
> are two of many much simpler methods.
>
> Nick
> n.j.cox@durham.ac.uk
>
> George Chioran
>
> I am trying to figure out how to stop at certain observations while
> looping through a variable. Currently I am looping through the price
> variable, and making the average price sorted by company. I would like
> my program to stop doing the loop when variable kv is equal to V
> However, I cannot manage to stop the loop when variable kv is equal to V
> (at the price of 51.92 in the first instance)
> as in a sample of my database attached below.
>
> My program looks like this:
>
> local j = 1
> while `j' <= 10 {
>               preserve
>               keep if ss == `j'
>               su price
>               local `j' = _result(3)
>               restore
>               local j = `j' +1
>               }
>
> Data base sample:
>
> date fondsnaam kv price ss
> 16-May-08 Grontmij K 24.7  7
> 03-Jul-08 Fortis K 10.175
> 11-Jul-08 AMGK 49.73  1
> 14-Jul-08 AMGK 49.59  1
> 17-Jul-08 Arcelor V 51.92  2
> 25-Jul-08 Fugro V 41.35  6
> 11-Aug-08 Fugro K 46.69  6
> 18-Aug-08 Nutreco K 43.35  8
> 21-Aug-08 Fugro K 49.42  6
> 05-Sep-08 SmitK 48.5  9
> 08-Sep-08 ArcelorV 44.64  2
> 08-Sep-08 Fugro K 47.83  6
>
>
>
>
> *
> *   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/
>

--
Steven Samuels
sjsamuels@gmail.com
18 Cantine's Island
Saugerties NY 12477
USA
Voice: 845-246-0774
Fax:    206-202-4783

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