Date: Mon, 14 Jun 2004 10:05:20 +0200
Reply-To: "Groeneveld, Jim" <jim.groeneveld@VITATRON.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: "Groeneveld, Jim" <jim.groeneveld@VITATRON.COM>
Subject: Re: Transpose Horizontal in Vertical
Content-Type: text/plain; charset="iso-8859-1"
Hi Thomas,
An often posed question and discussed subject on SAS-L. You might search the archives for more info (e.g. using PROC TRANSPOSE). The easiest way for you would be something like:
* (*untested*) ;
DATA Vertical (KEEP=ID Year VarX);
SET Horizontal;
ARRAY Var Var1 -- Var10;
DO I = 1 TO 10;
VarX = Var(I);
OUTPUT;
END;
RUN;
Regards - Jim.
--
. . . . . . . . . . . . . . . .
Jim Groeneveld, MSc.
Biostatistician
Science Team
Vitatron B.V.
Meander 1051
6825 MJ Arnhem
Tel: +31/0 26 376 7365
Fax: +31/0 26 376 7305
Jim.Groeneveld@Vitatron.com
www.vitatron.com
My computer didn't see Venus better than I did, but I didn't see it in reality.
[common disclaimer]
-----Original Message-----
From: Thomas [mailto:tythong@YAHOO.COM]
Sent: Monday, June 14, 2004 09:54
To: SAS-L@LISTSERV.UGA.EDU
Subject: Transpose Horizontal in Vertical
Hi all,
May I know how to transpose the variables from horizontal into vertical by
ID and YEAR? The example is illustrated as belows.
Thank you very much!
Thomas
*input;
ID YEAR VAR1 VAR2 VAR3 VAR4 VAR5 VAR6 VAR7 VAR8 VAR9 VAR10
1 1 10 10 20 25 25 50 54 60 60 60
1 2 11 10 20 25 36 50 54 60 60 99
1 3 11 10 20 25 36 36 50 54 60 .
1 4 11 10 20 25 36 36 50 54 60 60
2 1 10 11 30 36 39 50 55 60 64 .
2 2 10 15 13 29 36 39 50 60 66 64
*desired output;
ID YEAR VARX
1 1 10
1 1 10
1 1 20
1 1 25
1 1 25
1 1 50
1 1 54
1 1 60
1 1 60
1 1 60
1 2 11
1 2 10
1 2 20
1 2 25
1 2 36
1 2 50
1 2 54
1 2 60
1 2 60
1 2 99
1 3 11
1 3 10
1 3 20
1 3 25
1 3 36
1 3 36
1 3 50
1 3 54
1 3 60
1 3 .
1 4 11
1 4 10
1 4 20
1 4 25
1 4 36
1 4 36
1 4 50
1 4 54
1 4 60
1 4 60
2 1 10
2 1 11
2 1 30
2 1 36
2 1 39
2 1 50
2 1 55
2 1 60
2 1 64
2 1 .
2 2 10
2 2 15
2 2 13
2 2 29
2 2 36
2 2 39
2 2 50
2 2 60
2 2 66
2 2 64