SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1074|回复: 4
打印 上一主题 下一主题

求教:一个关于重命名的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2007-10-8 17:30:47 | 只看该作者

求教:一个关于重命名的问题

由于是新手,故请教一个比较弱智的问题:
如何把v1-v30(变量较多)重命名为存在一定规律的名字,如:id1a1 id2a2 id3a3 id4a4 id5a5 id6b1 id7b2 id8b3 id9b4 id10b5 id11c1 id12c2……
??

多谢大侠!!


thx!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2007-10-9 11:49:27 | 只看该作者

Re: 求教:一个关于重命名的问题

编宏先生成这些字符串,然后再rename
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2007-10-9 17:06:37 | 只看该作者

Re: 求教:一个关于重命名的问题

多谢!~
不过我还没有学习到宏语言~~
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2007-11-17 22:47:20 | 只看该作者

Re: 求教:一个关于重命名的问题

新手感兴趣尝试 是不是有点繁琐

%macro rname(data,varn,newdata);   /*data 原数据集 varn 变量个数 newdata 新数据集*/
data &newdata;
set &data;
%let cf=abcdefghigklmnopqrstuvwsyz;
%do i=1 %to &varn;
%let chr=%substr(&cf,%sysfunc(int(&i/5))+1,1);
%let j=%eval(&i-%eval(%sysfunc(int(&i/5))*5));
%if &j=0
%then
%do;
%let chr=%substr(&cf,%sysfunc(int(&i/5)),1);
%let j=5;
%end;
rename v&i=id&i.&chr.&j;
%end;
run;
%mend;


/*例子*/
data a;
v1=1 ;
v2=2;
v3=5;
v4=74;
v5=7;
v6=5;
v7=9;
v8=4;
v9=9;
v10=5;
v11=69;
v12=5;
run;
%rname(a,12,newa);
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-1-14 14:52:36 | 只看该作者

Re: 求教:一个关于重命名的问题

%macro a;
     data a;
          set a;
          %do i=1 %to 30;
              %let j=mob(%eval(&i.),5);
              rename V&i.=id&i.a&j.;
          %end;
     run;
%mend a;
%a;


呵呵,通俗一点,比较好看懂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 10:37 , Processed in 0.443238 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表