假设我有以下数据集查找:
ID T001 T002 T002 T004 T005
1 0 1 2 3 4
2 1 2 3 4 5
我想将其合并到我的主数据集main:
proc sql;
create table main as
select a.*, b.*
from main as a
left join lookup as b on a.ID = b.ID;
quit;
然而,这将合并"0"处的变量;T001"T002"T003";等我正在尝试使用merge/join重命名变量,而不必手动重命名每个变量,因为数据集中有100个这样的变量。我正在寻找类似的东西
ID V1 V2 V3 V4 V5
1 0 1 2 3 4
2 1 2 3 4 5
您可以在加入后使用简单的宏函数动态更改变量名称
data have;
input ID T001 T002 T003 T004 T005;
datalines;
1 0 1 2 3 4
2 1 2 3 4 5
;
%macro rn;
%do i = 1 %to 5;
T00&i. = V&i.
%end;
%mend;
proc datasets lib=work nolist;
modify have;
rename %rn;
run;quit;
编辑:
data have;
array t T001-T586 (586*100);
run;
%macro rn;
%do i=1 %to 586;
T%sysfunc(putn(&i., z3.)) = V&i.
%end;
%mend;
proc datasets lib=work nolist;
modify have;
rename %rn;
run;quit;