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

如何在SAS中将长格式数据转换为宽格式数据(附示例)

解决方案:将SAS长格式数据集转换为宽格式

针对你提供的长格式数据集,这里提供两种常用的转换方法:

方法一:使用PROC TRANSPOSE

这是SAS中转换宽长格式最便捷的工具,尤其适合这类有固定分组的场景:

/* 分别将arm、var1、var2按subject和day分组转成宽格式 */
proc transpose data=have out=trans_arm prefix=arm_;
    by subject day;
    id arm;
    var arm;
run;

proc transpose data=have out=trans_var1 prefix=var1_;
    by subject day;
    id arm;
    var var1;
run;

proc transpose data=have out=trans_var2 prefix=var2_;
    by subject day;
    id arm;
    var var2;
run;

/* 合并三个转置后的数据集,得到最终宽格式 */
data want;
    merge trans_arm trans_var1 trans_var2;
    by subject day;
    drop _NAME_; /* 删除转置自动生成的冗余列 */
run;

方法二:使用DATA步直接合并

如果熟悉DATA步的分组处理逻辑,可直接通过按subject和day分组读取两行数据构建宽格式,效率更高:

data want;
    set have;
    by subject day;
    /* 读取第一行(left组)数据,暂存到临时变量 */
    if first.day then do;
        arm_left = arm;
        var1_left = var1;
        var2_left = var2;
    end;
    /* 读取第二行(right组)数据,赋值后输出整行 */
    if last.day then do;
        arm_right = arm;
        var1_right = var1;
        var2_right = var2;
        output;
    end;
    /* 保留需要的变量 */
    keep subject day arm_left arm_right var1_left var1_right var2_left var2_right;
run;

两种方法都能生成你预期的宽格式数据集,DATA步方法更适合大数据量场景,PROC TRANSPOSE则在变量较多时更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:45:14