SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 638|回复: 6
打印 上一主题 下一主题

MACRO里关于in的一个应用问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-5-11 13:23:02 | 只看该作者

MACRO里关于in的一个应用问题

data a;
input x y z;
cards;
14 2 0
3 7  1
5 12 0
8 7  1
;
run;
如果我想写个
%macro mz;
%let v1=z;
%let v2=y;
%let v3=z;
%do i=1 % 3;
%if &&v&i.=x %then %do;
...
%end;
%else %if &&v&i.=y %then %do;
...
%end;
%mend;
这个程序是可以的。
但是下面的却不可以.
%macro mz;
%let v1=z;
%let v2=y;
%let v3=z;
%do i=1 % 3;
%if &&v&i. in (x,y) %then %do;
...
%end;
%mend;
这是为什么?可以改以及怎么改?因为真实数据的variable很多,不可能一个一个的写下来。
谢谢!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-5-11 13:41:55 | 只看该作者

Re: MACRO里关于in的一个应用问题

如果你用的是sas9版本以上的话,需要在options里面加个选项minoperator 这样sas的macro就可以使用in操作符了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-5-11 14:07:00 | 只看该作者

Re: MACRO里关于in的一个应用问题

use 'in' or '%in' in MACRO?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-5-11 14:21:08 | 只看该作者

Re: MACRO里关于in的一个应用问题

in
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2011-5-11 14:25:31 | 只看该作者

Re: MACRO里关于in的一个应用问题

%macro mz;
%let v1=z;
%let v2=y;
%let v3=z;
%do i=1 % 3;
%if &&v&i. in (x,y) %then %do;        or /*%if &&v&i. in ('x','y') %then %do;  */
...
%end;
%mend;

变量名需要引号吗?谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2011-5-11 15:08:19 | 只看该作者

Re: MACRO里关于in的一个应用问题

宏里面的字符都不用加引号,除非他含有引号,另外默认的分隔符是空格,如果你想修改分隔符的话需要用mindelimiter,如mindelimiter=','
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2011-5-11 15:10:13 | 只看该作者

Re: MACRO里关于in的一个应用问题

非常感谢!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-10 12:51 , Processed in 0.069291 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表