在 SAS 中,我有一个类似于下面的数据集。
ID TRACT meanFA sdFA medianFA
1 t01 0.56 0.14 0.56
1 t02 0.53 0.07 0.52
1 t03 0.71 0.08 0.71
2 t01 0.72 0.09 0.72
2 t02 0.83 0.10 0.86
2 t03 0.59 0.10 0.62
我不确定这里的转置概念是否正确...但我希望数据看起来像下面的那样。
ID t01_meanFA t01_sdFA t01_medianFA t02_meanFA t02_sdFA t02_medianFA t03_meanFA t03_sdFA t03_medianFA
1 0.56 0.14 0.56 0.53 0.07 0.52 0.71 0.08 0.71
2 0.72 0.09 0.72 0.83 0.10 0.86 0.59 0.10 0.62
proc transpose data=TRACT out=newTRACT;
var meanFA sdFA medianFA;
by id;
id tract meanFA sdFA medianFA;
run;
我一直在研究上面的 SAS 代码,但没有成功。任何想法或建议都会很棒!
最佳答案
双转置是您实现这一目标的方法。将其获取到一个数据集,该数据集每个 ID 每个所需变量都有一行,所以
ID=1 variable=t01_meanFA value=0.56
ID=1 variable=t01_sdFA value=0.14
...
ID=2 variable=t01_meanFA value=0.72
...
然后使用 ID=variable 和 var=value(或您选择命名这些列的任何名称)进行转置。您可以通过创建值数组 (array vars[3] meanFA sdFA medianFA;
) 来创建中间数据集,然后遍历该数组,将变量名称设置为 catx('_', tract,vname(vars[n]));
(vname
获取数组元素的变量名)。
关于SAS PROC 转置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082428/