----- Original Message -----
From: "Patrick Joly" <[email protected]>
To: <[email protected]>
Sent: Wednesday, November 06, 2002 10:53 PM
Subject: st: RE: bug in xpose.ado?
> I meant to suggest that -xpose- complains when _varname takes on the
> string values "v" plus an integer.  Scott's suggestion is not a
> solution since -xpose- will only fetch the variable names from a
> variable called _varname if it "exists in the data before transposition
> (see help for xpose).  If it doesn't, Stata uses the generic names v1,
> v2, ..., vN.  Scott's example appeared to be solution because the
> variables names of the transposed data turned out to correspond to the
> rows of _varname.  But this was merely a fluke.  It occurred because
> the first observation of _varname was v1, the second was v2, etc.  But
> it needn't be so.  _varname could look like,
>
>    _varname
> 1.       v5
> 2.       v9
> 3.      foo
> 4.      boo
> 5.       v3
> 6.     blah
>
> Consider this slightly modified example,
>
> clear
> set seed 1234
> set type double
> set obs 10
> g str1 _varname = ""
> replace _varname = "v" + string(_n+5)
> replace _varname = "boo" in 3
> replace _varname = "foo" in 6
> g myvar = round(uniform()*10,1)
>
> . list
>
>       _varname       myvar
>   1.        v6           5
>   2.        v7           3
>   3.       boo           3
>   4.        v9           4
>   5.       v10           9
>   6.       foo           9
>   7.       v12           5
>   8.       v13           1
>   9.       v14           3
>  10.       v15           1
>
> . xpose, clear
> v6 already defined
> r(110);
Not that I understand why xpose chokes on the values of _varname but if you
rename it, xpose works with the modified example as well.  I realize this might
not be a general solution....
. clear
. set seed 1234
. set type double
. set obs 10
obs was 0, now 10
. g str1 _varname = ""
(10 missing values generated)
. replace _varname = "v" + string(_n+5)
_varname was str1 now str3
(10 real changes made)
. replace _varname = "boo" in 3
(1 real change made)
. replace _varname = "foo" in 6
(1 real change made)
. replace _varname = "abcdefghijklmnopqrstvwxyz123456780" in 10
_varname was str3 now str34
(1 real change made)
. g myvar = round(uniform()*10,1)
. list
                               _varname       myvar
  1.                                 v6           5
  2.                                 v7           3
  3.                                boo           3
  4.                                 v9           4
  5.                                v10           9
  6.                                foo           9
  7.                                v12           5
  8.                                v13           1
  9.                                v14           3
 10. abcdefghijklmnopqrstvwxyz123456780           1
. renpfix _v v
. xpose,clear
. list
             v1          v2          v3          v4          v5          v6
v7          v8          v9         v10
  1.          .           .           .           .           .           .
.           .           .           .
  2.          5           3           3           4           9           9
5           1           3           1
Scott
*
*   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/