楼主: marakesh
3624 4

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

  • 1关注
  • 0粉丝

已卖:14份资源

硕士生

62%

还不是VIP/贵宾

-

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

楼主
marakesh 发表于 2018-2-27 11:05:10 |AI写论文
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
拉您进交流群
GMT+8, 2026-1-8 04:25