楼主: stabilizer
1367 3

[求助]这个宏哪儿出错了? [推广有奖]

  • 0关注
  • 0粉丝

高中生

75%

还不是VIP/贵宾

-

威望
0
论坛币
968 个
通用积分
0.4500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
328 点
帖子
21
精华
0
在线时间
42 小时
注册时间
2006-9-20
最后登录
2024-2-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

%macro cluster(x1,x2,i);
%do j=1 %to &i;
%if z1>=%sysevalf(&x1/(2*&j))& z2>=%sysevalf(&x2/(2*&j)) %then cluster=(3*&j-2);
%else %if 0=<z1<%sysevalf(&x1/(2*&j))& z2>=%sysevalf(&x2/(2*&j)) %then cluster=3*&j-1;
%else %if z1>=%sysevalf(&x1/(2*&j))& z2<%sysevalf(&x2/(2*&j)) %then cluster=3*&);
%else %if 0=<z1<%sysevalf(&x1/(2*&j))& 0=<z2<%sysevalf(&x2/(2*&j)) %then cluster=3*&j+1;
%end;
%mend;


data m.result;
set m.result;
%cluster(6.294,4.815,3);
run;

Z1和Z2是result的两个变量我想按照这两个变量的值分类,然后构造一个cluster变量放类别名称。总是说我这个出错,弄了一个下午了,大家帮帮忙

  cluster=(3*&j-2)
      ----
      22
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, *, **, +, -, /, ;, <, <=, <>, =, >, ><, >=, AND, EQ, GE, GT, LE, LT, MAX, MIN, NE, NG, NL,OR,^=, |, ||, ~=.

二维码

扫码加我 拉你入群

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

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

关键词:Cluster Macro eval Then else

沙发
ZM56134097 发表于 2008-12-6 18:54:00 |只看作者 |坛友微信交流群

很明显的错误啊,cluster=(3*&j-2),不需要括号的

使用道具

藤椅
stabilizer 发表于 2008-12-6 19:23:00 |只看作者 |坛友微信交流群

我去掉括号还是一样的错误啊

使用道具

板凳
宜桦 发表于 2008-12-9 00:27:00 |只看作者 |坛友微信交流群

put %do %end after %then such as:

%then %do; cluster=(3*&j-2);%end;

The macro will run. But the result might not be what you want (your code is syntaxlly right after add %do %end but logically I don't think your code is right).

Another tip: use mprint and mlogic options will help you diagnose the syntax error.

使用道具

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

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

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

GMT+8, 2024-4-27 23:48