Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: RE: AW: AW: RE: AW: RE: RE: reshape command ---listing all the variables changing over time?


From   "Nick Cox" <[email protected]>
To   <[email protected]>
Subject   st: RE: AW: AW: RE: AW: RE: RE: reshape command ---listing all the variables changing over time?
Date   Fri, 14 May 2010 12:53:28 +0100

I am sure you are right. I suppose that almost always I -reshape long-, which is why the point has not registered with me. 

Nick 
[email protected] 

Martin Weiss

Also, the dialog box at -db reshape- offers a drop-down for the variables of
the current dataset, whether the radio button at the top is set to "long
format from wide" or "wide format from long". So there is every reason to
think that users will fill in a -varlist-, not a "stub".

Martin Weiss

" I can't see where that's promised or implied."

Amanda`s post did keep me busy last night due to this slight inconsistency
in the help file. If you let Stata 

*************
reshape wide x, i(id) j(j)
*************

in my example, it complains:

x ambiguous abbreviation
r(111);


So that points to the expansion of a -varlist-, as in

***
clear
foreach var of newlist x1-x5{
	gen `var'=2
}
unab mylocal: x
***


All of which the help file does not make clear. Still, the variable names
thus passed to Stata are actually used as "stubs" for the wide form dataset:



. reshape wide x1-x5, i(id) j(j)
(note: j = 1 2 3)

Data                               long   ->   wide
----------------------------------------------------------------------------
-
Number of obs.                      300   ->     100
Number of variables                  12   ->      21
j variable (3 values)                 j   ->   (dropped)
xij variables:
                                     x1   ->   x11 x12 x13
                                     x2   ->   x21 x22 x23
                                     x3   ->   x31 x32 x33
                                     x4   ->   x41 x42 x43
                                     x5   ->   x51 x52 x53
----------------------------------------------------------------------------
-


HTH
Martin


-----Ursprüngliche Nachricht-----
Von: [email protected]
[mailto:[email protected]] Im Auftrag von Nick Cox
Gesendet: Freitag, 14. Mai 2010 13:15
An: [email protected]
Betreff: st: RE: AW: RE: RE: reshape command ---listing all the variables
changing over time?

Good point. 

I was replying directly to Amanda. But in your example and hers, I expected
the stubs   to be -x-. Bu in fact they are not. 

It's interesting that -reshape- in parsing a list of stubs will expand a
varlist. I can't see where that's promised or implied. I certainly hadn't
appreciated it before. 
 
Nick 
[email protected] 

Martin Weiss

" In addition, your -reshape- example is puzzling."


Actually, this was the _one_ aspect that I did not find strange about this
post. Which aspect of thie following example do you find puzzling?


*************
clear*
set obs 100
 
gen byte id=_n
expand 3
bys id: gen byte j=_n

foreach var of newlist x1-x5{
	//time varying vars
		gen `var'=rnormal()
}

foreach var of newlist y1-y5{
		//constant vars
		gen `var'=5
}

reshape wide x1-x5, i(id) j(j)

*************



HTH
Martin

-----Ursprüngliche Nachricht-----
Von: [email protected]
[mailto:[email protected]] Im Auftrag von Nick Cox
Gesendet: Freitag, 14. Mai 2010 12:57
An: [email protected]
Betreff: st: RE: RE: reshape command ---listing all the variables changing
over time?

In addition, your -reshape- example is puzzling. -reshape- expects
stubs, not variable names. 

Nick 
[email protected] 

Nick Cox

In addition to other replies

findname, all(@ == @[1]) 

finds all variables which are constant; adding its -not- option finds
the complement. You can specify a varlist too to separate constant and
changing variables. The syntax catches numeric and string variables
alike. 

-findname- is a user-written program from SSC. 

Amanda Fu

I was wondering if anyone could help me with a problem I met when
using --reshape--command.

When I tried to reshape a data set from long version to wide version,
I find I  need to list all the variables that are not constant in the
--reshape--command. Suppose the data set has 1500 variables changing
over time and 100 constant variables.
------------------------------------------------------------
. reshape wide x1-x1500, i(id) j(wave)
------------------------------------------------------------
If I miss any of the variables changing over time, the reshape command
will give error message such as "variable XXXX not constant " and will
stop working.  But it is so frustrating to separate the constant
variables and not-constant variables and list all of the latter ones
in the reshape command.

What I used to do is just to drop all the unnecessary variables from
the data set before reshape to reduce the work load here.

May I know if there is any more efficient way to deal with this problem?


*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index