请选择 进入手机版 | 继续访问电脑版
楼主: tsdy
1412 4

[问答] SAS宏内出现逗号问题 [推广有奖]

  • 2关注
  • 1粉丝

本科生

16%

还不是VIP/贵宾

-

威望
0
论坛币
48 个
通用积分
1.5000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
10291 点
帖子
43
精华
0
在线时间
91 小时
注册时间
2009-5-26
最后登录
2023-12-25

tsdy 发表于 2019-11-2 07:49:00 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好!
遇到这样一个问题:

data x;
set y;
if variable in ('S1','S2','S3') then output;
run;

想用宏取代括号内的'S1','S2','S3',怎么做?因为后续括号内会有不同的值,而且都带引号,变量之间都有逗号。求大家帮助!
二维码

扫码加我 拉你入群

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

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

关键词:SAS宏 Variable output outpu Then

苹果叶 在职认证  发表于 2019-11-2 09:15:14 |显示全部楼层 |坛友微信交流群
这没区别,照样用就好了,逗号不是必须的。
  1. %let a1 = 'S1', 'S2', 'S3';
  2. %let a2 = 'S1' 'S2' 'S3';
  3. %let a3 = 'S1', 'S2' 'S3';
  4. data test1 test2 test3;
  5.   do i = 1 to 10;
  6.     test = cats('S', i);
  7.     if test in (&a1.) then output test1;
  8.     if test in (&a2.) then output test2;
  9.     if test in (&a3.) then output test3;
  10.   end;
  11. run;
复制代码
已有 1 人评分经验 收起 理由
eijuhz + 20 热心帮助其他会员

总评分: 经验 + 20   查看全部评分

使用道具

tsdy 发表于 2019-11-4 23:20:37 |显示全部楼层 |坛友微信交流群
苹果叶 发表于 2019-11-2 09:15
这没区别,照样用就好了,逗号不是必须的。
谢谢您的回复。关键是我要在后续的执行过程中,改变括号内的值。因为要执行多次宏,每次执行,可能要取不同的变量值,因此在后续执行时,该怎么写括号内的值?

使用道具

tsdy 发表于 2019-11-4 23:24:40 |显示全部楼层 |坛友微信交流群
苹果叶 发表于 2019-11-2 09:15
这没区别,照样用就好了,逗号不是必须的。
这个只是我70多行程序中的一部分,我拿出来举例子了。因为要执行多次宏,每次宏所选变量都不同,所以在执行宏时,要从S1-S79中选择不同的值填入,例如第一次执行要选择variable in ('S1','S2','S3'),在执行第二次时要选择variable in ('S4','S5')……。不知道我补充的是否清楚

使用道具

苹果叶 在职认证  发表于 2019-11-5 19:10:43 |显示全部楼层 |坛友微信交流群
tsdy 发表于 2019-11-4 23:24
这个只是我70多行程序中的一部分,我拿出来举例子了。因为要执行多次宏,每次宏所选变量都不同,所以在执 ...
后面执行根据什么改变括号内的值呢?考虑一下用call execute 吧

使用道具

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

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

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

GMT+8, 2024-4-19 07:43