2025-05-05 转置数据集的方式选择(DATA步 or TRANSPOSE过程)

内容分享2个月前发布
0 0 0

转置使用场景及两种方法的优劣

转置发生在:

  1. 现有长数据,想要宽数据;
  2. 现有宽数据,想要长数据。

SAS自带用于转置的过程,即PROC TRANSPOSE,需要指定by变量、id变量、var变量,转置后自动生成新的变量名,原变量名和变量标签也会分别储存在新的两个变量中。好处是不需要知道实际的值也可以实现转置,但初学者较难记住每个参数的含义。

而DATA步则直观,适用于不需要生成许多新变量的情况,通过筛选、改名、匹配合并的方式来实现转置。好处是代码行少,但需要对数据集的变量值有充分的了解,从而在能控制哪些变量值是用于生成新变量。

实践例子

  1. 长数据

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;

2025-05-05 转置数据集的方式选择(DATA步 or TRANSPOSE过程)

  • 方法一: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;

2025-05-05 转置数据集的方式选择(DATA步 or TRANSPOSE过程)

  • 方法二: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;

2025-05-05 转置数据集的方式选择(DATA步 or TRANSPOSE过程)

© 版权声明

相关文章

暂无评论

none
暂无评论...