楼主: maoxinshu
1824 5

[求助]请教关于宏的两个问题 [推广有奖]

  • 1关注
  • 2粉丝

VIP

博士生

47%

还不是VIP/贵宾

-

威望
0
论坛币
7884 个
通用积分
64.0288
学术水平
3 点
热心指数
7 点
信用等级
3 点
经验
5814 点
帖子
351
精华
0
在线时间
235 小时
注册时间
2004-11-8
最后登录
2024-3-30

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

请教关于宏的两个问题:

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_)

二维码

扫码加我 拉你入群

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

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

关键词:rename Number Start Names Macro 求助 请教

回帖推荐

Vulpecula 发表于3楼  查看完整内容

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

本帖被以下文库推荐

沙发
maoxinshu 发表于 2007-3-10 19:15:00 |只看作者 |坛友微信交流群
ding

使用道具

藤椅
Vulpecula 发表于 2007-3-10 22:37:00 |只看作者 |坛友微信交流群

我也顶一下

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

已有 1 人评分论坛币 收起 理由
bakoll + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

使用道具

板凳
maoxinshu 发表于 2007-3-10 23:26:00 |只看作者 |坛友微信交流群
谢谢Vulpecula,你的理解很正确,不是顺手打的,主要是刚学还还有完全弄透,谢谢指点。

使用道具

报纸
maoxinshu 发表于 2007-3-11 18:49:00 |只看作者 |坛友微信交流群

使用道具

地板
happyheran 发表于 2007-3-11 18:59:00 |只看作者 |坛友微信交流群
请教:胡运权的运筹学基础及应用书上的案例分析,高手们帮忙一下,谢谢

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 16:02