全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1479 5
2013-05-10

将变原始量名改成 flt2_num_var_noms_1,flt2_num_var_noms_2,flt2_num_var_noms_3,以此类推。

码出以下程序,可是报错,不懂如何修正,请教大虾!


%macro chg_name();

%let m=0;

  %let dsid=%sysfunc(open(uat.develop_final3));

  %if &dsid gt 0 %then %do;

  %let nobs=%sysfunc(attrn(&dsid,nobs));

  %do i=1 %to &nobs;

             %let varnume=%sysfunc(varnum(&dsid,var2));

             %let variable=%sysfunc(getvarc(&dsid,&varnume));

%let m=%eval(&m.+1);

%put &m.;

proc datasets lib=uat nolist;

modify develop_final3;

rename&variable=flt2_num_var_noms_&m.;

quit;

%end;

%end;

  %let dsid=%sysfunc(close(&dsid));

  %end;

%mend chg_name;

%chg_name;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-5-10 23:09:50
My guess: you cannot modify uat.develop_final3 in proc datasets while it's been opened in the macro already.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-11 09:11:38
Changed a few places, including using  nvars, varname, and data-step rename

data class;
    set sashelp.class;
run;

%macro chg_name();
  %let dsid=%sysfunc(open(class));
  %if &dsid gt 0 %then %do;
       %let n_vars=%sysfunc(attrn(&dsid,nvars));
       %do i=1 %to &n_vars;
          %let var&i=%sysfunc(varname(&dsid, &i));
       %end;
  %end;
  %let dsid=%sysfunc(close(&dsid));
       %do i = 1 %to &n_vars;
           data class;
           set class;
           rename &&var&i=flt2_num_var_noms_&i;
           run;
       %end;
%mend chg_name;
%chg_name;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-11 10:16:49
proc contents and datasets 都是效率好的过程。原因是不读取具体的数据值。虽然我见过有人有PROC CONTENTS DATA =A(OBS =1)等等的写法,但我认为这很可能是多余的。当然是个人观点。京剧
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-11 10:19:36
yongyitian 发表于 2013-5-11 09:11
Changed a few places, including using  nvars, varname, and data-step rename

data class;
no offense but try to avoid loops in macro if possible
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-5-11 12:00:00
Agree with upper floors that using proc contents and proc datasets are the accepted methods for renaming dataset variables.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群