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

st: RE: bug in xpose.ado?


From   Patrick Joly <pat.joly@utoronto.ca>
To   statalist@hsphsun2.harvard.edu
Subject   st: RE: bug in xpose.ado?
Date   Wed, 6 Nov 2002 23:53:14 -0500

In my earlier posting, I wrote 
> -xpose- seems to object when the _varname variable contains the 
> string values v1, v2, ..., vN.  For instance, 
> 
> <snip> 
> 
> . list 
>      _varname      myvar 
> 1.         v1          1 
> 2.         v2          2 
> 3.         v3          3 
> 4.         v4          4 
> 5.         v5          5 
> 
> <snip> 
> 
> . xpose, clear 
> v1 already defined 
> r(110); 
> 

and Scott Merryman replied 
> Perhaps the problem is not the values of the variable 
> but the variable name. 
> 
> If you rename _varname xpose seems to work. 

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 

and I should have made that clear in my earlier posting.  Invoking - 
xpose- with the above values, Stata would balk and tell me that either 
v5, v9 or v3 already exists when in fact this isn't true. 

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); 


Feature or bug?  Looks like the latter to me since all values are 
perfectly legitimate variable names. 

I also wrote yesterday that situations similar to these arise for me 
because I must: 1) load data which does not necessarily contain names 
for each variable (via -insheet-), some do some don't; 2) transpose it 
once; 3) perform certain operations; and 4) transpose it again.  I 
cannot append a prefix or a suffix to the string values in _varname 
since some may already be at the 32-character limit for names. 


Pat Joly 
pat.joly@utoronto.ca 
joly.patrick@ic.gc.ca 
*
*   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