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

SAS实现单表两列合并为一列的方法求助

在SAS中将两列合并为一列的解决方案

输入数据

data have;
input ID Emp1 $ Emp2 $;
cards;
1 Ani Mia
1 Pat Vul
1 Kiu Max
run;

解决方案

以下两种方法均可实现将Emp1和Emp2两列合并为单列Emp,同时保留对应ID的需求:

方法一:Data Step逐行输出

通过在数据步中对每行数据分别输出两次,依次将Emp1和Emp2的值赋值到新列:

data want;
    set have;
    Emp = Emp1;
    output;
    Emp = Emp2;
    output;
    keep ID Emp;
run;

方法二:PROC TRANSPOSE转置

借助转置过程将列转换为行,需先添加行号确保分组逻辑正确:

/* 添加行号用于分组 */
data have_with_row;
    set have;
    row = _n_;
run;

/* 转置列到行 */
proc transpose data=have_with_row out=want_transposed(rename=(col1=Emp) drop=_name_ row);
    by ID row;
    var Emp1 Emp2;
run;

/* 整理最终输出 */
data want;
    set want_transposed;
    keep ID Emp;
run;

两种方法最终输出的数据集结构一致:每个ID对应原Emp1和Emp2的所有取值,按行排列在Emp列中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:02:04