转置使用场景及两种方法的优劣
转置发生在:
- 现有长数据,想要宽数据;
- 现有宽数据,想要长数据。
SAS自带用于转置的过程,即PROC TRANSPOSE,需要指定by变量、id变量、var变量,转置后自动生成新的变量名,原变量名和变量标签也会分别储存在新的两个变量中。好处是不需要知道实际的值也可以实现转置,但初学者较难记住每个参数的含义。
而DATA步则直观,适用于不需要生成许多新变量的情况,通过筛选、改名、匹配合并的方式来实现转置。好处是代码行少,但需要对数据集的变量值有充分的了解,从而在能控制哪些变量值是用于生成新变量。
实践例子
- 长数据
data x;
input id t $ v;
cards;
1 a 222
2 a 221
3 a 112
1 b 111
2 b 777
1 c 8
2 c 9
3 c 10
;
run;

- 方法一:PROC TRANSPOSE
proc transpose data=x out=xt name=Original_Variable prefix=NC_ suffix=_value;
by id;
id t;
var v;
run;
proc print data=xt;run;

- 方法二:DATA step
data xt2(drop=t);
merge x(where=(t="a") rename=(v=NC_a_value))
x(where=(t="b") rename=(v=NC_b_value))
x(where=(t="c") rename=(v=NC_c_value));
by id;
run;
proc print data=xt2;run;

© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...


