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

请教关于宏的两个问题:

1. 将多个数据集合并为一个数据集;

data data_all;

set data1998 data1999 data2000 data2001 data2002 data2003 data2004 data2005;

run;

用下述宏语言改写,为什么无法执行?

%macro names(name,number);

%do n=1998 %to &number;

&name&n;

%end;

%mend names;

data data_all;

set %names(data,2005);

run;

2.同时对数个不同的变量进行重命名(看来宏语言和数组的结合很强大,但比较难)

data new;

set old;

rename x1=new_x1;

rename y2=new_y2;

...;

rename zn=new_zn;

run;

用宏语言编写,无法运行:

%macro rename(startvar,endvar,pre);

data new;

set old;

array oldvar(*) &startvar--&endvar;

array newvar(*) &pre&startvar--&pre&endvar;/*SAS无法定义新变量*/

%do i=1 %to dim(oldvar);

rename newvar(i)=oldvar(i);

%end;

run;

%mend rename;

%rename(x1,zn,new_)

二维码

扫码加我 拉你入群

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

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

全部回复
2007-3-10 19:15:00
ding
二维码

扫码加我 拉你入群

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

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

2007-3-10 22:37:00

我也顶一下

关于第一个问题,我试了一下,觉得可以把“&name&n;”这句的“;”去掉,再看看有没有效果。因为宏的核心概念还是文本替换,这边的“;”可能和“set %names(data,2005);”末尾的“;”冲突了。估计是写命令的时候顺手打上去了吧。

二维码

扫码加我 拉你入群

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

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

2007-3-10 23:26:00
谢谢Vulpecula,你的理解很正确,不是顺手打的,主要是刚学还还有完全弄透,谢谢指点。
二维码

扫码加我 拉你入群

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

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

2007-3-11 18:49:00
二维码

扫码加我 拉你入群

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

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

2007-3-11 18:59:00
请教:胡运权的运筹学基础及应用书上的案例分析,高手们帮忙一下,谢谢
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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