如何使用PROC TRANSPOSE将SAS宽格式数据集重塑为长格式?
SAS宽表转长格式解决方案
你需要的是将宽格式数据集转换为长格式,PROC TRANSPOSE完全可以实现,只是需要正确设置参数。假设原数据集名为wide,以下是实现代码:
/* 转置宽表为长表 */ proc transpose data=wide out=long(rename=(col1=value)) name=variable; by year quarter; /* 保持不变的分组变量 */ var var_1 var_2 var_3; /* 需要转置的数值变量 */ run; /* 查看结果 */ proc print data=long; run;
代码说明:
by year quarter:指定转置时保持分组的变量,这两个变量会原样保留在输出数据集中。var var_1 var_2 var_3:指定需要被转置的数值列,这些列的名字会变成variable列的值,对应的值会放到value列。name=variable:将原变量名存储到名为variable的新列中(默认是_NAME_,这里重命名为你需要的variable)。out=long(rename=(col1=value)):输出数据集命名为long,并将默认生成的数值列col1重命名为value,匹配你想要的格式。
输出结果:
运行后得到的long数据集结构如下:
year quarter variable value 2000 1 var_1 5 2000 2 var_1 3 2000 3 var_1 8 2000 1 var_2 8 2000 2 var_2 11 2000 3 var_2 2 2000 1 var_3 1 2000 2 var_3 5 2000 3 var_3 10
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

