楼主: marakesh
3081 4

[技术讨论与投票] SAS9.4 data步里调用宏变量赋值 [推广有奖]

  • 1关注
  • 0粉丝

硕士生

62%

还不是VIP/贵宾

-

威望
0
论坛币
2247 个
通用积分
0.1367
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
381 点
帖子
26
精华
0
在线时间
330 小时
注册时间
2017-12-20
最后登录
2024-3-15

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." 也可以,你可以试下
关键词:data步 宏变量赋值 Data SAS9 Demographic
沙发
舍身卫道 发表于 2018-2-27 11:05:11 |只看作者 |坛友微信交流群
因为 你的宏变量group赋值为E就是一个字符,然后你的if语句判断id的值是否为E,由于E是个字符,所以需要用引号引起来,你可以不修改%let语句,修改下面的if id="&group." 也可以,你可以试下

使用道具

藤椅
cashes93 发表于 2018-2-27 12:34:50 |只看作者 |坛友微信交流群
没有引号的时候解析出来的E当做了变量E,运行的时候肯定有“变量E为初始化”在日志中,有引号的时候解析出来 是字符串‘E’

使用道具

板凳
marakesh 发表于 2018-2-27 14:52:43 |只看作者 |坛友微信交流群
cashes93 发表于 2018-2-27 12:34
没有引号的时候解析出来的E当做了变量E,运行的时候肯定有“变量E为初始化”在日志中,有引号的时候解析出来 ...
是这个样的,谢谢

使用道具

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

使用道具

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

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

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

GMT+8, 2024-4-19 21:44