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: [email protected]
*
* 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/