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
相关产品推荐
相关产品推荐

