Statalist The Stata Listserver

[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: Weights vs subscripts

From   "Nick Cox" <>
To   <>
Subject   st: RE: Weights vs subscripts
Date   Wed, 4 Oct 2006 10:35:23 +0100

You pretty well answered your own question. 

Stata permits weights in some commands, although not in 

Or rather Stata permits subscripts in -replace-, 
by virtue of their being part of an expression, 
appearing to the RHS of an = sign. In an example 

. gen d = c

. replace d[1] = 1
weights not allowed

Stata's reasoning is, or is equivalent to, 

(a) "replace d" I understand. 

(b) but what is that "[1]"? 

(c) it is to the left of the = sign, so it 
is _not_ part of the expression 

(d) so the user must intend it as some specification
of weights

(e) but weights are not allowed in -replace-. 

There remains the question of what you are trying 
to do. I think Alex and Michael misread your question, 
as your code is looping over a varlist. 

foreach i of varlist x {
	replace y=y[`i'-1]+ z[`i'] 

As the varlist contains a single variable, the 
loop is redundant here, so this boils down to 

replace y = y[x - 1] + z[x] 

The implication is that x contains 
observation numbers, in effect pointers. Is that right? 
It is a way of getting some subtle effects, or you 
might be confused. 


Michael Blasnik
Actually, the better (faster) way to do this is 

replace y=y[`i'-1] +z[`i'] in `i'

Alex Ogan
Somebody more knowledgeable will probably explain exactly why you can't
use subscripts on the left side like that.

But I can suggest a workaround:

replace y=y[`i'-1] +z[`i'] if _n==`i'

Shihe Fan
Could any one explain to me why it is OK to write the code in the
following way
gen y=0
foreach i of varlist x {
	replace y=y[`i'-1]+ z[`i'] 
but not OK in this way

replace y[`i']=y[`i'-1] +z[`i']
the program always treat the [`i'] on the left side as 
weights, instead of subscripts

*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index