全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3500 4
2018-02-27
悬赏 5 个论坛币 已解决
请教一个关于宏变量调用的问题
首先我想解决的问题是,demographic这个表格里面的变量id包含两种值,分别是E和Y。我想把id值为E的数据保留下来。于是声明了宏变量group,并赋值E。并执行data步。
%let group=E;
data demographic;
set demographic;
if id=&group;
run;
但是在data步运行之后,并没有完成数据的筛选,结果生成的数据集demographic是空的。
然后在我把以上宏变量改为
%let group='E';
才执行出了我想要的结果。


有没有人能解释下为什么 %let group=E; 没有得出我想要的结果?
十分感谢!


最佳答案

舍身卫道 查看完整内容

因为 你的宏变量group赋值为E就是一个字符,然后你的if语句判断id的值是否为E,由于E是个字符,所以需要用引号引起来,你可以不修改%let语句,修改下面的if id="&group." 也可以,你可以试下
二维码

扫码加我 拉你入群

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

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

全部回复
2018-2-27 11:05:11
因为 你的宏变量group赋值为E就是一个字符,然后你的if语句判断id的值是否为E,由于E是个字符,所以需要用引号引起来,你可以不修改%let语句,修改下面的if id="&group." 也可以,你可以试下
二维码

扫码加我 拉你入群

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

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

2018-2-27 12:34:50
没有引号的时候解析出来的E当做了变量E,运行的时候肯定有“变量E为初始化”在日志中,有引号的时候解析出来 是字符串‘E’
二维码

扫码加我 拉你入群

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

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

2018-2-27 14:52:43
cashes93 发表于 2018-2-27 12:34
没有引号的时候解析出来的E当做了变量E,运行的时候肯定有“变量E为初始化”在日志中,有引号的时候解析出来 ...
是这个样的,谢谢
二维码

扫码加我 拉你入群

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

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

2018-2-27 14:53:33
舍身卫道 发表于 2018-2-27 14:14
因为 你的宏变量group赋值为E就是一个字符,然后你的if语句判断id的值是否为E,由于E是个字符,所以需要用引 ...
谢谢 我当时也用了你说的办法,用引号,但是没成功。现在看了你解答我才反应过来当时用的是单引号,谢谢。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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