You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PROC TRANSPOSE重塑指定结构的SAS数据集?

解决方案

你需要分两次使用PROC TRANSPOSE,同时配合生成组合列名来实现目标结构,具体步骤如下:

1. 先将原数据集转置为长格式

这一步把var_1、var_2、var_3拆分成单独的行,同时保留cat1和time分组:

/* 假设原数据集名为original */
proc transpose data=original out=long_data;
    by cat1 time;
    var var_1 var_2 var_3;
run;

转置后long_data的核心结构为:

cat1timeNAMECOL1
0prevar_18
0prevar_212
0postvar_13
............

2. 生成组合列名

把cat1和time拼接成目标中的列名(如0pre、1post):

data long_data_with_col;
    set long_data;
    col_name = cats(cat1, time); /* 自动将数值型cat1转为字符后拼接 */
run;

3. 再次转置为宽格式

以_NAME_(即原变量名)为分组依据,将col_name作为新列名,COL1作为对应值:

proc transpose data=long_data_with_col out=final_result prefix=;
    by _NAME_;
    id col_name;
    var COL1;
run;

/* 可选:将_NAME_重命名为更清晰的列名 */
data final_result;
    set final_result;
    rename _NAME_ = variable;
run;

最终final_result的结构就和你期望的完全一致:

variable0pre1pre0post1post
var_18639
var_2121124
var_37198

内容的提问来源于stack exchange,提问作者alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:46:10