Thanks for the plug. I'd have to recommend -labmask-
myself as probably the most user-friendly solution here.
If it didn't exist, the problem yields to a few lines.
* check the assumption of correspondence in
your desired direction:
bysort var1 (var2) : assert var2[1] == var2[_N]
(compare:
How do I list observations in a group that differ on a variable?
http://www.stata.com/support/faqs/data/diff.html)
* get the distinct values of -var2-:
levelsof var2, local(levels)
foreach l of local levels {
su var1 if var2 == "`l'", meanonly
label def var1 `r(min)' "`l'", add
}
By assumption the values of -var1- given -var2-
are identical. So we can do a look-up by a -summarize-
of those values, and add a new value label each
time around the loop.
Then we link the labels to the variable:
label val var1 var1
Nick
[email protected]
Rosy Reynolds
> Nick Cox's nifty program -labmask-, part of the -labutil-
> suite, will do the
> job. It assigns the values (or optionally value labels) of
> one variable as
> the value labels of another.
> -findit labutil-
MA V
> > I have the following in my data:
> > obs var1 var2
> > 1 304 House
> > 2 666 Land
> > 3 200 Building
> > 4 304 House
> > 5 304 House
> > ... ... ....
> >
> > where var2 contains the labels for var1. Since I have many
> labels it will
> > not be easy to create the labels for var1 by hand. Is there an easy
> > procedure to make stata recognize that there is an unique
> correspondence
> > between var1 and var2 and to label var1 using var2?
*
* 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/