Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


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

st: RE: i-1 in forvalues loop


From   Nick Cox <n.j.cox@durham.ac.uk>
To   "'statalist@hsphsun2.harvard.edu'" <statalist@hsphsun2.harvard.edu>
Subject   st: RE: i-1 in forvalues loop
Date   Tue, 18 Oct 2011 15:11:30 +0100

I don't understand what you are trying to do. I comment only on obvious Stata problems. 

`i-1' would only work if "i-1" were the name of a local macro, but it can't be such a name, as minus signs are not allowed in Stata names. 

gen bal`i' = bal`=`i'-1' * 3166.467

would at first sight work as then Stata knows to evaluate the expression 

`i' - 1 

on the fly. 

Your code largely consists of putting constants into variables, which is legal but not especially good style. 

Note that 

gen lotto=sum(studentsj3)                                                  //sum of target population

produces a _cumulative_ sum: only in the last observation will this be the actual sum, as your comment implies. Whether the comment or the code is what you want only you can say. 

Nick 
n.j.cox@durham.ac.uk 

Viktor Emonds

I am trying to draw a sample with random start, fixed interval systematic sampling procedure in each explicit stratum. The data in each stratum are already sorted by all the implicit stratifiers with serpentine sorting for a variable of particular interest. Now I just need to do the actual sampling and tried to start by doing the following:

use ethnicframe31                                                              //the specific explicit stratum
gen lotto=sum(studentsj3)                                                  //sum of target population
egen bal1= mean(3166.4667*runiform())                             //random starting point
forvalues i=2/15 {                                                          //Draw ' lotto balls' by adding the fixed interval
gen bal`i'= bal`i-1'*3166.4667
}

gen winnaar=0                                                                 //Identify ' winning'  schools
forvalues i=1/15{
replace winnaar=1 if inrange(bal`i',lotto[_n-1],lotto)
}

Apparently, the `i-1'  in the first loop is not understood. What am I doing wrong here? Thanks in advance!

*
*   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index