楼主: freerunning_sky
4618 9

[原创博文] 在data步使用where语句疑问 [推广有奖]

  • 0关注
  • 3粉丝

博士生

54%

还不是VIP/贵宾

-

威望
0
论坛币
718 个
通用积分
1.9496
学术水平
14 点
热心指数
19 点
信用等级
11 点
经验
7309 点
帖子
210
精华
0
在线时间
375 小时
注册时间
2011-10-26
最后登录
2020-6-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在data步使用where语句为什么不能用max(of x1-x3)这样的选择语句?
谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:data步 Where HERE Data whe where

回帖推荐

freerunning_sky 发表于3楼  查看完整内容

运行结果: 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; ...

本帖被以下文库推荐

沙发
Imasasor 发表于 2012-8-14 15:17:07 |只看作者 |坛友微信交流群
能用的,where不能像if 一样用then,你看看你程序中是不是有then, 不能用set中不存在的变量,仅此而已。
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

藤椅
freerunning_sky 在职认证  发表于 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;

  9. data output;
  10.         set input;
  11.         where max(of var1-var3)>=4;
  12. run;

  13.          
复制代码
运行结果:

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 秒
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

使用道具

板凳
ziyun.88 发表于 2012-8-14 15:44:43 |只看作者 |坛友微信交流群
您的问题应该出在那个(of var1-var3)上,
换成where max(var1,var2,var3)>=4试试

使用道具

报纸
chenys625 发表于 2012-8-15 08:58:57 |只看作者 |坛友微信交流群
楼上说的不对吧! 把where改成if就可以了

使用道具

地板
bobguy 发表于 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.

使用道具

7
Imasasor 发表于 2012-8-15 10:12:30 |只看作者 |坛友微信交流群
同意bobguy的说法
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

使用道具

8
hcydlee 发表于 2012-8-15 11:12:34 |只看作者 |坛友微信交流群
在SAS Laguage Reference上面明确说明where不支持 函数使用 of syntax作为参数。主要原因就是where是在读入数据之前对其进行逻辑判定,而of syntax需要在PDV里面判定。
80 字节以内
不支持自定义 Discuz! 代码

使用道具

9
slimdell 发表于 2012-8-15 23:34:05 |只看作者 |坛友微信交流群
赞,受教了,以后用OF注意了
知乎专栏/微信公号同名:煮酒烹茶读书

使用道具

10
00810112 发表于 2012-8-16 10:13:51 |只看作者 |坛友微信交流群
学习学习,这下又长知识了

使用道具

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

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

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

GMT+8, 2024-4-27 15:03