Statalist


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

RE: st: a possible - foreach - question?


From   "Nick Cox" <[email protected]>
To   <[email protected]>
Subject   RE: st: a possible - foreach - question?
Date   Tue, 14 Oct 2008 16:12:14 +0100

This was in essence my reading too. -foreach- and especially -levelsof-
are not at all suited for the problem originally posed by Carlo. I would
tweak Austin's recipe, although I have not tested the difference:

gen d = . 
gen work = . 

qui forval i = 1/10000 { 
	scalar temp = a[`i'] 
	replace work = temp * b - c 
	su work, meanonly 
	replace d = r(mean) in `i' 
} 

The main difference is to get Stata to look up the element of -a- just
once in each loop, rather than 10,000 times, unless Stata optimises that
(my guess is it doesn't). 

Nick 
[email protected] 

Austin Nichols

Carlo Lazzaro <[email protected]>
Not sure I've understood, but if so, here is one method of calculation.

use bp* tcresult using http://www.stata-press.com/data/r9/nhanes2, clear
ren bpsystol a
ren bpdiast b
ren tcresult c
g double d=.
qui forv i=1/`=_N' {
 if a[`i']<. {
  g double tmp=a[`i']*b-c
  su tmp, meanonly
  replace d=r(mean) in `i'
  drop tmp
  }
 }

On Tue, Oct 14, 2008 at 4:50 AM, Carlo Lazzaro
<[email protected]> wrote:

> I have three variables (a; b; C with 10,000 observations each) in long
> format.
> For each value of a I would like to obtain the following one:
>
> (a1 * b1) - c1
> .
> .
> .
> .
> (a1*b10,000)-c10,000;
>
> Repeat the above reported would-be 10,000 times (i.e., from a1 to
a10,000)
>
> Create a new variable d in which the mean of each one of the 10,000
> iterations are stored and can be displayed.
>
> I suppose there's way of doing this with Stata 9.2/SE, but I cannot
figure
> out the proper syntax.

*
*   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–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index