全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3358 4
2017-07-01
data set a1中有100个变量, a1x, a2x ...a100x
需要批量重命名为  b1x,b2x ...b100x

测试数据:
复制代码

我的做法:
复制代码

想请教一下各位大师有没有不用PROC SQL的做法? 有的话麻烦贴一下…让小弟可以学习一下 多谢


二维码

扫码加我 拉你入群

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

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

全部回复
2017-7-1 04:52:50
不知道我理解你的意思对不对,是要把100个变量的名字从a变成b开头吗?
如果所有变量都是同一个data type,可以用array 和do loop rename 吧。

array old[*] a1x--a100x;
array new[*] b1x--b100x;
Do i=1 to 100;
rename old[i]=new[i];
end;
run;

类似于这样,不知道可不可行。 我也是新手,学习中。
二维码

扫码加我 拉你入群

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

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

2017-7-1 11:48:58
如果变量名是有规律的,用楼上的array+do loop就可以rename,之后再drop掉旧的就好。
如果变量名没有规律,你又不想用proc sql,我有个笨办法就是转置用b替换a后再转置回去:
data b; /*提取变量名*/
set sashelp.vcolumn;
where libname="WORK" and memname="A1" and name like 'a%';
run;

data c(keep=name name2); /*创建新名*/
set b;
name2='b'||substr(name,2);
run;


proc transpose data=a1 out=a2 name=name;
run;
proc sort data=c;
by name;
proc sort data=a2;
by name;

data d (drop=name);
merge c a2;
by name;
run;

proc transpose data=d out=new_a1(drop=_name_);
ID name2;

run;
二维码

扫码加我 拉你入群

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

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

2017-7-1 17:51:28
popodan 发表于 2017-7-1 11:48
如果变量名是有规律的,用楼上的array+do loop就可以rename,之后再drop掉旧的就好。
如果变量名没有规律, ...
多谢

原来dictionary.columns是几乎等价于sashelp.vcolumn的…
二维码

扫码加我 拉你入群

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

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

2017-7-2 00:53:34
哈哈,刚发现有个好玩的做法可以批量替换前后缀的,不需要从dictionary或者sashelp里提取变量名,直接用varname函数来提取然后替换就好。
比如你这个题可以这样:
%macro
replaceprefix(lib,dsn,start,end,oldprefix,newprefix);
proc contents data=&lib..&dsn.;
title 'before renaming';
run;
data temp;
set &lib..&dsn.;
run;
%LET ds=%SYSFUNC(OPEN(temp,i));
%let ol=%length(&oldprefix.);
%do i=&start %to &end;
%let dsvn&i=%SYSFUNC(VARNAME(&ds,&i));
%let l=%length(&&dsvn&i);
%let vn&i=&newprefix.%SUBSTR(&&dsvn&i,&ol+1,%EVAL(&l-&ol));
%end;
data &lib..&dsn.;
set temp;
%do i=&start %to &end;
&&vn&i=&&dsvn&i;
drop &&dsvn&i;
%end;
%let rc=%SYSFUNC(CLOSE(&ds));
proc contents data=&lib..&dsn.;
title 'Replacing Prefix on Selected variables ';
run;
%mend replaceprefix;

%replaceprefix(WORK,a1,1,8,a,b);
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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