Join 在合并中重命名SAS变量
假设我有以下数据集查找: 我想将其合并到我的主数据集main中: 但是,这将合并“T001”、“T002”、“T003”等处的变量。 我试图用merge/join重命名变量,而不必手动重命名每个变量,因为数据集中有100个这样的变量。我想买点像这样的东西Join 在合并中重命名SAS变量,join,merge,sas,Join,Merge,Sas,假设我有以下数据集查找: 我想将其合并到我的主数据集main中: 但是,这将合并“T001”、“T002”、“T003”等处的变量。 我试图用merge/join重命名变量,而不必手动重命名每个变量,因为数据集中有100个这样的变量。我想买点像这样的东西 ID V1 V2 V3 V4 V5 1 0 1 2 3 4 2 1 2 3 4 5 在连接之后,可以使用简单的宏函数动态更改变量名称 da
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;
编辑:
非常感谢。如果我有100个这样的变量,例如,它在T586结束,我将如何调整上面的内容,因为我假设“T00&I.”在前导零的情况下不起作用?刚刚编辑了上面的代码。看看这是否适用于您:-)
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;