当所有变量都有所需的后缀时,在sas中将宽变长

当所有变量都有所需的后缀时,在sas中将宽变长,sas,transpose,Sas,Transpose,我希望第一个宽数据集作为第二个长数据文件,我考虑过使用数组,但是考虑到我有100个变量(示例中只有2个),我需要100个数组吗 你能告诉我怎么做吗 使用双转置。首先转换到一个高的结构。然后将名称拆分为basename和time。然后再换位。这里是未测试的代码,因为没有提供示例数据(只有照片) proc transpose data=have out=tall ; by id; var _numeric_; run; data fixed ; set tall ; time =

我希望第一个宽数据集作为第二个长数据文件,我考虑过使用数组,但是考虑到我有100个变量(示例中只有2个),我需要100个数组吗

你能告诉我怎么做吗


使用双转置。首先转换到一个高的结构。然后将名称拆分为basename和time。然后再换位。这里是未测试的代码,因为没有提供示例数据(只有照片)

proc transpose data=have out=tall ;
  by id;
  var _numeric_;
run;
data fixed ;
   set tall ;
   time = scan(_name_,-1,'_');
   _name_ = substr(_name_,1,length(_name_)-length(time)-1);
run;
proc sort data=fixed ;
  by id time;
run;
proc transpose data=fixed out=want ;
  by id time ;
  id _name_;
  var col1;
run;