如何在SAS中转置非唯一变量?

如何在SAS中转置非唯一变量?,sas,Sas,我有一个如下所示的数据集: 目标 第一因子 因素2 1. A. 0 1. B 0 1. C 1. 2. D 0 2. E 0 3. F 0 将两列中的每一列从长格式转换为宽格式,然后合并结果: proc transpose data=in_dset out=temp1 prefix=Factor1Col; by objectid; var factor1; run; proc transpose data=in_dset out=temp2 prefix=Factor2Col;

我有一个如下所示的数据集:

目标 第一因子 因素2 1. A. 0 1. B 0 1. C 1. 2. D 0 2. E 0 3. F 0
将两列中的每一列从长格式转换为宽格式,然后合并结果:

proc transpose data=in_dset out=temp1 prefix=Factor1Col;
   by objectid;
   var factor1;
run;

proc transpose data=in_dset out=temp2 prefix=Factor2Col;
   by objectid;
   var factor2;
run;

data final;
   merge temp1(drop=_name_) temp2(drop=_name_);
   by objectid;
run;

如果性能非常重要,您可能需要使用一个
proc transpose'和一个更复杂的merge语句
merge temp(where=(\u name\u=Factor1)rename=(Col1=Factor1Col1…)`,但您需要一些宏编码来实现自动化。Factor1和FACTOR2都是字符变量吗?