楼主: ruinyo
1915 3

[问答] sas 语句含义求解 [推广有奖]

  • 0关注
  • 0粉丝

小学生

0%

还不是VIP/贵宾

-

威望
0
论坛币
5 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
33 点
帖子
3
精华
0
在线时间
1 小时
注册时间
2012-5-6
最后登录
2017-4-8

5论坛币
if _error_=1 then do;
put 'error occurred for tool_obs=' tool_obs/
'during data step iteration' _n_/
'tool_obs value may be out of range.';
_error_=0;
这段不理解,全部代码如下:
  1. data stock(index=(partno));
  2. input PARTNO $ DESC $ INSTOCK @17 RECDATE date7. @25 PRICE;
  3. format  recdate date7.;
  4. cards;
  5. K89R seal   34  27jul95 245.00
  6. M4J7 sander 98  20jun95 45.88
  7. LK43 filter 121 19may96 10.99
  8. MN21 brace 43   10aug96 27.87
  9. BC85 clamp 80   16aug96 9.55
  10. NCF3 valve 198  20mar96 24.50
  11. KJ66 cutter 6   18jun96 19.77
  12. UYN7 rod  211   09sep96 11.55
  13. JD03 switch 383 09jan97 13.99
  14. BV1E timer 26   03jan97 34.50
  15. ;
  16. run;


  17. data newp;
  18. input tool_obs newp;
  19. cards;
  20. 1 251.00
  21. 4 30.00
  22. 6 25.75
  23. 10 35.00
  24. ;
  25. data stock;
  26. set newp;
  27. modify stock point=tool_obs
  28. nobs=max_obs;
  29. if _error_=1 then do;
  30. put 'error occurred for tool_obs=' tool_obs/
  31. 'during data step iteration' _n_/
  32. 'tool_obs value may be out of range.';
  33. _error_=0;
  34. stop;
  35. end;
  36. price=newp;
  37. run;
复制代码

关键词:Data step iteration occurred during switch filter
沙发
Strive、 发表于 2017-4-8 15:46:14 |只看作者 |坛友微信交流群
SAS在每次迭代,或者说读取数据时都会自动生成两个自动变量 _ERROR_,和_N_; 前者表示此次迭代是否出错,若出错,则值为1,反之为0.后者是表示第几次迭代。

使用道具

藤椅
ruinyo 发表于 2017-4-8 17:16:04 |只看作者 |坛友微信交流群
Strive、 发表于 2017-4-8 15:46
SAS在每次迭代,或者说读取数据时都会自动生成两个自动变量 _ERROR_,和_N_; 前者表示此次迭代是否出错,若 ...
为什么一定要有这段?put不是输出吗?这一段是让sas做什么呢?

使用道具

板凳
Strive、 发表于 2017-4-8 18:03:05 来自手机 |只看作者 |坛友微信交流群
ruinyo 发表于 2017-4-8 17:16
为什么一定要有这段?put不是输出吗?这一段是让sas做什么呢?
这要看个人的需求,可以不需要的,反正看log也看得出错误,但防止有些人不会看log吧。这一段是在出错时,让SASput出哪个观测、第几次迭代出错。

使用道具

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

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

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

GMT+8, 2024-4-27 01:39