|
沙发

楼主 |
发表于 2007-1-15 12:15:14
|
只看该作者
to barboxie
好问题!有没有人有更简单的好方法?因为这个需求我在实际工作中的确碰到很多次了。
[code:0d76b]%macro rename_vars(ds, prefix);
%global rename_stmt;
%let rename_stmt=;
%let dsid=%sysfunc(open(&ds, i));
%let n=%sysfunc(attrn(&dsid, nvars));
%do i=1 %to &n;
%let varname=%sysfunc(varname(&dsid, &i));
%let rename_stmt=%str(&rename_stmt &varname.=&prefix.&varname);
%end;
%let rc=%sysfunc(close(&dsid));
data &ds;
set &ds(rename=(&rename_stmt));
run;
%mend rename_vars;
%rename_vars(ds=work.test, prefix=temp);[/code:0d76b] |
|