Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Join 在合并中重命名SAS变量_Join_Merge_Sas - Fatal编程技术网

Join 在合并中重命名SAS变量

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

假设我有以下数据集查找:

我想将其合并到我的主数据集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

在连接之后,可以使用简单的宏函数动态更改变量名称

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;