什么是转置?转置其实就是数据结构的转换,将横向的结构转成纵向的结构,或将纵向转向横向。
比如,在临床试验中,很多EDC系统在DataBase design时候将实验室检测那一块的实测值每一个检测项的实测都是一个新的变量,最后在做统计分析的时候需要将实测都合成一个变量(LBORRES),每个检查项的名称都放在(LBTEST)这个变量中...在如,在做一些汇总表格的时候同样可能需要将数据结构翻来覆去的改变...因此数据的转置,是在实际编程中经常遇到....
proc transpose <data=input-data-set> <NAME=name> <OUT=output-data-set> <PREFIX=prefix>;
BY <DESCENDING> variable-1 <...<DESCENDING> variable-n> <NOTSORTED>;
COPY variable(s);
ID variable;
IDLABEL variable;
VAR variable(s);
run;
Data :输入要数据集
Name: 输入转置后的生成变量
Out:输出的数据集
Perfix:装置后变量的前缀
BY:语句 使输入数据集分组转置,分组变量被包括在输出数据集中。
COPY:语句 将变量复制到新的数据集中。
ID:语句 用来指定转置后的变量名
IDLABEL:语句 为转置后的变量名添加标签
VAR:语句中应列出要被转置的变量名,否则原数据集中未在其他语句中列出的所有数值型变量都将被转置,字符型变量必须在VAR语句中列出才能被转置,未被转置的变量不进入新的数据集,除非它们已列入COPY或BY语句。
Create Data
Proc transpose过程
data final;
set final;
order=_N_;
run;
proc transpose data=final out=final2 name=grp prefix=typ;
id order;
idlabel TYPE;
run;
我又想转回去了...
proc transpose data=final2 out=final3 name=Typ ;
id grp;
idlabel _LABEL_;
run;
完简单的例子后,在来看看一些其他的例子
proc sort data=RAW.DM out=DM ;by USUBJID ;quit ;
proc transpose data=RAW.DM out=DM prefix=TYP;
by USUBJID ;
var _all_;
run;