Bookmark and Share

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

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

st: RE: i-1 in forvalues loop

From   Nick Cox <>
To   "''" <>
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. 


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:

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