楼主: sgap
5929 3

[问答] sas宏,时间循环问题 [推广有奖]

  • 0关注
  • 1粉丝

高中生

40%

还不是VIP/贵宾

-

威望
0
论坛币
6 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
203 点
帖子
18
精华
0
在线时间
22 小时
注册时间
2011-10-18
最后登录
2017-1-23

楼主
sgap 发表于 2013-12-9 14:39:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
小白欲用宏实现日期的循环输出,代码如下:
%macro dateira(date_begin,date_end);
%let a= "&date_begin."d;
%let b= "&date_end."d;
%do date = &a %to &b;
put &date;
%end;
%mend;
%dateira(01NOV2013,30DEC2013);
在执行的时候会发生:
ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &a
ERROR: %FROM 值(%DO DATE 循环中)无效。


但直接用程序:
data dateira;
format date yymmdd10.;
do date="01nov2013"d to "30dec2013"d;
output;
end;
run;
却不会出现上述的字符类型不匹配的问题。
请教各位大神:
1.发生这种错误的原因是什么?
2.宏代码应如何改正?

二维码

扫码加我 拉你入群

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

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

关键词:SAS宏 format output Error begin ERROR 程序

沙发
heperwong 在职认证  发表于 2013-12-9 16:21:39
options mlogic ;
%macro dateira(date_begin,date_end);
%let a= "&date_begin."d;
%put &a;
%let b= "&date_end."d;
%put &b;
%do date = %sysfunc(putn(&a,best.)) %to %sysfunc(putn(&b,best.));
%put &date;
%end;
%mend;
%dateira(01NOV2013,30DEC2013);
已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

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

藤椅
sgap 发表于 2013-12-9 16:55:50
非常感谢~从代码来看,小白的时间循环中,没有进行时间的格式规范,但在数据步中,也并未进行时间的格式设定,为啥执行的时候会没问题呢?

板凳
shiyishibasui 发表于 2013-12-25 09:59:39
楼主,那么不是时间的宏循环也是提示“ERROR: 在需要数值操作数的 %EVAL 函数或 %IF 条件中发现字符操作数。条件是: &maxnum.
ERROR: %TO 值(%DO I 循环中)无效。”这样的错误,也要这样改吗?我的原始数据是数值型的

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 03:20