全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1512 3
2008-12-06

%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,^=, |, ||, ~=.

二维码

扫码加我 拉你入群

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

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

全部回复
2008-12-6 18:54:00

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

二维码

扫码加我 拉你入群

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

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

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.

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群