Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: assignment by indexing


From   Allan Reese <R.A.Reese@hull.ac.uk>
To   Stata distribution list <statalist@hsphsun2.harvard.edu>
Subject   Re: st: assignment by indexing
Date   Tue, 3 Feb 2004 12:55:10 +0000 (GMT)

On Tue, 3 Feb 2004, Ben Pelzer wrote:
> Since I'm a stata-rooky this question probably is very basic. I'm looking
> for a way to copy the contents of a specific variable out of the list "x1 x2
> x3 x4 x5" to a new variable, newvar, say. However, which variable to copy
> depends on the value of another variable, index, say. So I would need
> something like:
>
> generate newvar = x(index).

Unless I have misunderstood the question, Ben has fingered something that
is a curious gap in Stata, but I may be biased here since another package
provides exactly what he describes.  To clarify the terminology, he wants
to assign values from one variable into another, with the permutation of
values determined by a third variable.  So

*   gen  y = x[rankx]

where "rankx" holds the rank of the corresponding value in x, would assign
the x values in order into y.

Unfortunately, * is not currently supported by Stata, and appears to be
one situation where an explicit loop is required.  I used such code in an
ado file, but offer here a simplified untested retyping.  One oddity was
that _N could not be written in the for command

   loc nn = _N
   gen y = .
   forvalues i = 1/`nn' {
      replace y = x in rankx
   }



R. Allan Reese                       Email:     r.a.reese@hull.ac.uk

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   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   |   What's new   |   Site index