楼主: maoxinshu
2041 5

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

  • 1关注
  • 2粉丝

VIP

博士生

47%

还不是VIP/贵宾

-

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

楼主
maoxinshu 发表于 2007-3-10 10:28:00 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-29 18:01