全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5172 9
2012-08-14
在data步使用where语句为什么不能用max(of x1-x3)这样的选择语句?
谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-14 15:17:07
能用的,where不能像if 一样用then,你看看你程序中是不是有then, 不能用set中不存在的变量,仅此而已。
二维码

扫码加我 拉你入群

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

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

2012-8-14 15:22:10
复制代码
运行结果:

1    data input;
2        var1=1;var2=2;var3=3;
3        output;
4        var1=1;var2=2;var3=4;
5        output;
6        var1=1;var2=2;var3=5;
7        output;
8    run;

NOTE: 数据集 WORK.INPUT 有 3 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.01 秒
      CPU 时间         0.00 秒


9
10   data output;
11       set input;
12       where max(of var1-var3)>=4;
                      ----
                      22
                      76
ERROR: 解析 WHERE 子句时出现语法错误。
ERROR 22-322: 语法错误,期望下列之一: !, !!, &, (, *, **, +, ',', -, /, <, <=, <>, =, >,
              >=, ?, AND, BETWEEN, CONTAINS, EQ, GE, GT, LE, LIKE, LT, NE, OR, ^=, |, ||,
              ~=.

ERROR 76-322: 语法错误,语句将被忽略。

13   run;

NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.OUTPUT 可能不完整。该步停止时,共有 0 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.00 秒
      CPU 时间         0.00 秒
二维码

扫码加我 拉你入群

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

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

2012-8-14 15:44:43
您的问题应该出在那个(of var1-var3)上,
换成where max(var1,var2,var3)>=4试试
二维码

扫码加我 拉你入群

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

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

2012-8-15 08:58:57
楼上说的不对吧! 把where改成if就可以了
二维码

扫码加我 拉你入群

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

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

2012-8-15 10:02:27
What I understand is that syntax

of y1-y3

requires PDV(program data vector)

The where process is prior data process when that pdv is not available yet.

max (y,y2,y3,...) will work.
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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