SAS - proc sql - select 列属于一起?

SAS - proc sql - select columns belonging together?

我想在 PROC SQL(也许使用宏?)中按列名称拆分具有许多 (454) 列的 table。

例如:某列以 "Column21....T"、"Column22....T" 等开头。

我该怎么做?

(@Mod: 感谢清理:))

编辑,一张图说明一切:

This is my transposed table with 454 columns

PROC SORT
 DATA=work.stat(KEEP=A_ B_ C_ D_ Vx G Vy)
 OUT=work.stat2;
   BY G;
RUN;

PROC TRANSPOSE DATA=work.stat2
 OUT=WORK.x(LABEL="Transposed")
 PREFIX=Column
 LET
 NAME=Source
 LABEL=Label;

   BY G;
   ID Vx;
   IDLABEL Vy;
   VAR A_ B_ C_ D_;
 RUN;

您可以使用:后缀来制作变量列表。

data first ;
  set have ;
  keep id1 id2 column21: ;
run;

data second ;
  set have ;
  keep id1 id2 column22: ;
run;

已更新,提供了更多详细信息。

那么为什么不单独转置每个组呢?制作一个宏来转置 Vx.

的一个值
%macro split(value);
PROC TRANSPOSE DATA=work.stat2
  OUT=WORK.Column&value (LABEL="Transposed Vx=&value")
  PREFIX=Column
  LET
  NAME=Source
  LABEL=Label
;
  BY G;
  WHERE Vx=&value ;
  ID Vx;
  IDLABEL Vy;
  VAR A_ B_ C_ D_;
RUN;
%mend split ;

然后为每个 Vx 值调用一次。

proc sort data=work.stat2(keep=Vx) nodupkey out=Vx_list ;
  by Vx ;
run;
data _null_;
  set Vx_list;
  call execute(cats('%nrstr(%split)(',Vx,')'));
run;

宏程序:

%macro split(data,outdata);
    %do i=21 %to 121;
        data &outdata.&i;
            set &data;
               keep id1 id2 col&i:;
            run;
     %end;
%mend;