对数据集进行转置,即行变成列,列变成行,可以使用transpose过程。transpose过程的基本语法结构如下:
proc transpose options;
var variable-list;
id variable;
by variable-list;;
run;
1.语句中的options 是表示transpose过程可以使用的某些选项,其中常见的选项如下:
data=数据集:表示将对哪个数据集进行转置,若缺失该项,则默认使用最新创建的数据集。
out=数据集:表示将转置后的数据输出到哪个数据集。
2.var语句 列出要转置的变量,可以是字符型或数值型,多个变量以空格分开。如果省略var语句,则输入数据集中没有列在其他语句中的所有数值型变量均被转置。字符型变量若要转置必须在var中列出。
3.id语句 id语句规定输入数据集中的一个变量。id变量的值作为转置后数据集的变量名。id变量的值在输入数据集中只能出现一次;或者使用by语句,则在by组中只能出现一次。id变量缺失的观测将从输出数据集中删去。如果省略id语句,transpose过程指定名字COL1,COL2,…,COLn作为输出变量名。
4.by语句 使用by语句可以对每个by组进行转置,by变量包含在输出数据集中但没有被转置。使用by语句,要求数据集按照by语句后面的变量进行排序。
例如:
proc sort data=advs out=advs1;by USUBJID SITEID RANDNO AVISITN AVISIT ADTMC SEX AGE WEIGHT;run;
proc transpose data=advs1 out=advs2 prefix=V;
var AVALC;
id PARAMN;
by USUBJID SITEID RANDNO AVISITN AVISIT ADTMC SEX AGE WEIGHT;
idlabel PARAM;
run;
prefix可以设置转置后的变量名以V开头,该例结果为V1,V2,…,Vn;by语句可以保留无需转置但仍然需要的变量,比如:SEX,AGE,WEIGHT;idlabel设置转置后的变量名标签为PARAM变量的值。