楼主: 郑小知
2743 10

[原创博文] 宏名解析中的疑问,请大牛指点迷津! [推广有奖]

  • 0关注
  • 0粉丝

硕士生

27%

还不是VIP/贵宾

-

威望
0
论坛币
30 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
487 点
帖子
133
精华
0
在线时间
92 小时
注册时间
2007-5-19
最后登录
2021-5-2

楼主
郑小知 发表于 2010-10-8 20:31:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个逻辑判别语句,where date='2010-10-1'd
中间的2010-10-1为宏变量&day.
如何实现date='&day'd
尝试用date=%str(%'&day%'d),解析的时候,只能出现'&day'd.请大牛指点一二.
二维码

扫码加我 拉你入群

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

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

关键词:指点迷津 Where date HERE 如何实现 where 如何

沙发
crackman 发表于 2010-10-8 20:33:29
我觉得你搞复杂了

藤椅
hopewell 发表于 2010-10-8 22:27:00
  1. %let date=2010-10-1;
  2. %put *** %nrstr(&date)=&date ***;
  3. data _null_;
  4.     date=input("&date",yymmdd10.);
  5.     put '*** date=' date yymmdd10. ' ***';
  6. run;
复制代码

板凳
郑小知 发表于 2010-10-8 22:31:40
HOPEWELL你就是我的膜拜的大牛阿,看到你就看到了光明!向你敬礼了

报纸
hopewell 发表于 2010-10-8 23:00:03
你咋不说是crackman指导的好呢?

地板
郑小知 发表于 2010-10-9 00:14:46
crackman是气功派,你是剑派,代码就是你的剑,通过你的一翻笔划,我就豁然开朗了.然后仔细想想CRACKMANd大牛的话,确实是想复杂了.问题解决了.我一直纠缠于 '宏'd 的替换,你的这个思路让我通过另一种方式解决掉了.就是转换日期格式.实在是高,但是如果真的要实现 '宏'd 的替换,这里代码如何写?我尝试了几个连接符,无果.  请hope兄帮我看下.非常感谢.

7
jingju11 发表于 2010-10-9 00:58:24
hopewell 发表于 2010-10-8 22:27
  1. %let date=2010-10-1;
  2. %put *** %nrstr(&date)=&date ***;
  3. data _null_;
  4.     date=input("&date",yymmdd10.);
  5.     put '*** date=' date yymmdd10. ' ***';
  6. run;
复制代码
HOPEWELL向来是水平+态度。
我想也可以直接赋数字值比如:


  1. %let date=%sysfunc(inputn(2010-10-1, yymmdd10.));
  2. %put ***date =&date(numeric) =%sysfunc(putn(&date, yymmdd10.))(formatted);
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 我很赞同

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

8
pobel 在职认证  发表于 2010-10-9 08:07:05
郑小知 发表于 2010-10-9 00:14
crackman是气功派,你是剑派,代码就是你的剑,通过你的一翻笔划,我就豁然开朗了.然后仔细想想CRACKMANd大牛的话,确实是想复杂了.问题解决了.我一直纠缠于 '宏'd 的替换,你的这个思路让我通过另一种方式解决掉了.就是转换日期格式.实在是高,但是如果真的要实现 '宏'd 的替换,这里代码如何写?我尝试了几个连接符,无果.  请hope兄帮我看下.非常感谢.
To write a SAS date constant, enclose a date in quotation marks in the standard SAS form ddMMMyyyy and immediately follow the final quotation mark with the letter D. The D suffix tells SAS to convert the calendar date to a SAS date value.

%let day=09Oct2010;
data _null_;
     *** The reference of macro variable should be in double quotation marks.;
     date="&day"d;
  put "******" date yymmdd10. "***";
run;
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 我很赞同
soporaeternus + 1 我很赞同

总评分: 学术水平 + 2  热心指数 + 1  信用等级 + 1   查看全部评分

和谐拯救危机

9
郑小知 发表于 2010-10-9 16:25:50
谢谢各位大牛了,实在是让小弟折服!你们的存在实在是SAS初学者的福音。这个问题解析的非常完美了。太感谢了,呵呵!

10
我们爱花菜 发表于 2010-10-10 13:08:20
提示: 作者被禁止或删除 内容自动屏蔽

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

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