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

st: RE: xpose or reshape


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: RE: xpose or reshape
Date   Tue, 12 Oct 2004 11:10:38 +0100

In this case, I would go back a step and read in the data using 
-infile, byvariable()-. 

For your example set, you need 7 string variables, 
and 5 observations, 
and there are no blanks within strings, so try 

forval i = 1/7 { 
	local args "`args' str80 v`i'" 
} 

infile `args' using <whateverfile>, byvariable(5) 

foreach v of var * { 
	capture rename `v' `=`v'[1]' 
} 

drop in 1 

compress 


> 1		foo1.chp	foo2.chp	foo3.chp	foo4.chp
> 2	Date	10/11/04	10/11/04	10/11/04	10/11/04
> 3	type	U133A_2	U133A_2	U133A_2	U133A_2
> 4	group	lymph		lymph		lymph		heart
> 5	noise	1.4		1.24		1.5		1.25
> 6	bkd	46.7		50.4		32.4		18.6
> 7	bkdsd	.28		.28		.26		.09

Nick 
n.j.cox@durham.ac.uk 

Wallace, John

> I've come across what appears to be a simple transposition 
> problem, but I'm unable to solve it.  I have a tab-delimited 
> text-file data source where the records are columns and the 
> variables are rows.  The variable labels are effectively the 
> first column, and the record labels are the first row, thus:
> 
> 	v1	v2		v3		v4		v5
> 1		foo1.chp	foo2.chp	foo3.chp	foo4.chp
> 2	Date	10/11/04	10/11/04	10/11/04	10/11/04
> 3	type	U133A_2	U133A_2	U133A_2	U133A_2
> 4	group	lymph		lymph		lymph		heart
> 5	noise	1.4		1.24		1.5		1.25
> 6	bkd	46.7		50.4		32.4		18.6
> 7	bkdsd	.28		.28		.26		.09
> 
> It looks like a clear case for -xpose-, except that all the 
> data are brought into Stata as strings because the first row 
> (filenames) are strings.  -xpose- results in an empty 
> dataset.  I'm looking at reshape and stack, but I can't 
> figure out how they could accomplish what I'm looking for:
> 
> 	v1	v2		v3		v4		
> v5	v6	v7	v8
> 1	v1	.		Date		type		
> group	noise	bkd	bkdsd
> 2	v2	foo1.chp	10/11/2004	U133A_2	lymph	
> 1.4	46.7	0.28
> 3	v3	foo2.chp	10/11/2004	U133A_2	lymph	
> 1.24	50.4	0.28
> 4	v4	foo3.chp	10/11/2004	U133A_2	lymph	
> 1.5	32.4	0.26
> 5	v5	foo4.chp	10/11/2004	U133A_2	heart	
> 1.25	18.6	0.09
> 
> (or actually, ideally)
> 
> 	v1		Date		type		group	
> noise	bkd	bkdsd
> 1	foo1.chp	10/11/2004	U133A_2	lymph	1.4	
> 46.7	0.28
> 2	foo2.chp	10/11/2004	U133A_2	lymph	1.24	
> 50.4	0.28
> 3	foo3.chp	10/11/2004	U133A_2	lymph	1.5	
> 32.4	0.26
> 4	foo4.chp	10/11/2004	U133A_2	heart	1.25	
> 18.6	0.09
> 
> Previously, I've handled similar problems by resorting to 
> Excel - importing the text file, using the copy/Paste Special 
> ..transpose function, then exporting the result as a text 
> file and proceeding with Stata.  My trick has failed me 
> though, this time I have more than 256 records!  (Excel can't 
> handle anything wider than 256, or longer than 65535 for that matter).
> 

*
*   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