在一个 SAS 库中重命名多个数据集中的多个变量
Rename Multiple Variables in Multiple Data sets in ONE SAS Library
有没有一种方法可以重命名一个 SAS 库中多个 table 中的相同变量,其中还有其他 table 没有那个 table?所有具有需要重命名的变量的 table 都具有相同的两个以 table 名称开头的字符。我见过宏可以重命名一个数据集中的多个变量,但不会重命名多个数据集中的多个变量。如果能提供任何帮助,我们将不胜感激!
不需要宏。您可以使用 call execute 和 proc 数据集将一些东西组合在一起。例如
data _null_;
set sashelp.vtable end = eof;
/*Replace xx with your two-letter dataset prefix*/
where libname = upcase('mylib') and memname eq: upcase('xx') and memtype = 'DATA';
if _n_ = 1 then call execute('proc datasets lib = mylib;');
call execute(catx(' ','modify',memname,'; rename var1 = newvar1 var2 = newvar2; run;'));
if eof then call execute('quit;');
run;
这应该 运行 或多或少是即时的,因为它只需要修改元数据。
有没有一种方法可以重命名一个 SAS 库中多个 table 中的相同变量,其中还有其他 table 没有那个 table?所有具有需要重命名的变量的 table 都具有相同的两个以 table 名称开头的字符。我见过宏可以重命名一个数据集中的多个变量,但不会重命名多个数据集中的多个变量。如果能提供任何帮助,我们将不胜感激!
不需要宏。您可以使用 call execute 和 proc 数据集将一些东西组合在一起。例如
data _null_;
set sashelp.vtable end = eof;
/*Replace xx with your two-letter dataset prefix*/
where libname = upcase('mylib') and memname eq: upcase('xx') and memtype = 'DATA';
if _n_ = 1 then call execute('proc datasets lib = mylib;');
call execute(catx(' ','modify',memname,'; rename var1 = newvar1 var2 = newvar2; run;'));
if eof then call execute('quit;');
run;
这应该 运行 或多或少是即时的,因为它只需要修改元数据。