Proc Transpose :

This procedure changes variables into observations or observations into variables. Proc transpose reads in a dataset and then outputs the results to another dataset.

Syntax:-
PROC TRANSPOSE < OPTIONS >;
VAR VARIABLE-LIST;
BY VARIABLE-LIST;
ID VARIABLE<S>;
COPY VARIABLE<S>;
RUN;
Examples:-
Data ds;
Infile Datalines;
Input id name$ sex$ age salary dollar5.;
Datalines;
101 abc m 23 $5000
102 def f 25 $4500
103 jkl f 21 $4500
104 mno m 29 $5000
105 xyz m 32 $6000
;
Run;
Options:-
Data=dataset: – Specify dataset name which SAS will be transposed.
Proc transpose data=ds;
Run;
Out=dataset: – Specify output dataset name where we can get transposed data.
Create new SAS dataset with transpose variables
If we won’t specify out=dataset name proc transpose reads data from data=dataset and gives result in system created dataset DATA1, DATA2 etc…
Prefix = Name
U can specify a prefix for naming transposed variables, default that name will come as col1, col2, … colN but when we specify Prefix=Name that names will come as Name21, Name2,…., NameN etc…
Prefix will change column names permanently.

Example:-
Data ds;
Infile Datalines;
Input id name$ sex$ age salary dollar5.;
Datalines;
101 abc m 23 $5000
102 def f 25 $4500
103 jkl f 21 $4500
104 mno m 29 $5000
105 xyz m 32 $6000
;
Run;
Proc transpose data=ds;
Run;
In above program it reads data from DS1 and creates a dataset DATA1 with transposing values, we didn’t specify out variable so system is creating output dataset as data1
Proc transpose data=ds out=ds2;
Run;
In above program it reads data from DS1 and creates a dataset DS2 with transposing values
Default it transposes only numeric variables but if we want to transpose any specific / character variables use VAR statement
Whatever variables want to transpose specify those in VAR statement.
Proc transpose data=ds out=ds2;
Var id name sex age salary;
Run;
Proc transpose data=ds out=ds2 Prefix=Stansys;
Var id name sex age salary;
Run;
Proc sort data=ds out=dss;
By sex;
Run;
Proc transpose data=dss out=ds2 Prefix=Stansys;
Var id name sex age salary;
By sex;
Run;
Anyhow sex is coming as a by variable remove sex from Var and look on the output.
Proc transpose data=dss out=ds2 Prefix=Stansys;
Var id name age salary;
By sex;
Run;
Proc transpose data=dss out=ds2 Prefix=Stansys;
Var id name sex age salary;
By sex;
Id name;
Run;
Proc transpose data=dss out=ds2 Prefix=Stansys;
Var id name sex salary;
/*By sex;*/
/*Id name;*/
Copy age;
Run;
Proc transpose data=dss out=ds2 Prefix=Stansys;
Var id name sex salary;
By sex;
/*Id name;*/
Copy age;
Run;
Proc transpose data=dss out=ds2 Prefix=Stansys;
Var id name sex salary;
By sex;
Id name;
Copy age;
Run;