楼主: taoyuanjl
2261 7

do循环问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

10%

还不是VIP/贵宾

-

威望
0
论坛币
1282 个
通用积分
3.1000
学术水平
2 点
热心指数
7 点
信用等级
2 点
经验
1117 点
帖子
66
精华
0
在线时间
136 小时
注册时间
2016-2-3
最后登录
2024-3-18

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. data a;        
  2. do i=1 to 5;  
  3. input name $ idno status $;                                                
  4. if status='PT' then continue;    /*返回到下次循环的开头*/                  
  5. input benefits $10.;   
  6. output;        
  7. end;         
  8. cards;        
  9. Jones 9011 PT
  10. Thomas 876 PT
  11. Richards 1002 FT
  12. Eye/Dental
  13. Kelly 85111 PT
  14. Smith 433 FT
  15. HMO
  16. Kelly 85111 PT
  17. Smith 433 FT
  18. HMO
  19. Jones 9011 PT
  20. Thomas 876 PT
  21. Richards 1002 FT
  22. Eye/Dental
  23. ;
  24. run;
复制代码
我的问题是:do语句只有5次循环,而观测数为10个,为什么能全部执行?

二维码

扫码加我 拉你入群

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

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

关键词:do循环 continue Benefits Richard benefit benefits continue status

沙发
rendajingguan01 发表于 2016-5-25 09:34:01 |只看作者 |坛友微信交流群
我运行了一下你的代码


189  data a1;
190      do i=1 to 5;
191          input name idnostatus idno status ;
192          if status='PT' then continue;    /*返回到下次循环的开头*/
193          input benefits $10.;
194          output;
195      end;
196
197      cards;

NOTE: 字符值已转换为数值,位置:(行:列)。
      192:19
NOTE: 在第 198 行、第 5-9 列中有对“name”无效的数据。
NOTE: 在第 198 行、第 16-17 列中有对“idno”无效的数据。
NOTE: 在第 199 行、第 5-10 列中有对“status”无效的数据。
NOTE: 数值数据“PT”无效,位置: 行 192 列 19。
NOTE: 在第 200 行、第 5-12 列中有对“name”无效的数据。
NOTE: 在第 200 行、第 19-20 列中有对“idno”无效的数据。
NOTE: 在第 201 行、第 5-14 列中有对“status”无效的数据。
NOTE: 数值数据“PT”无效,位置: 行 192 列 19。

使用道具

藤椅
taoyuanjl 发表于 2016-5-25 16:25:54 |只看作者 |坛友微信交流群
rendajingguan01 发表于 2016-5-25 09:34
我运行了一下你的代码
代码中第3行的name和status变量为字符型,所以后有美元字符(上面代码没显示出来),所以正确的应为:
input name 美元字符 idno status 美元字符;

使用道具

板凳
pobel 在职认证  发表于 2016-5-31 08:04:59 |只看作者 |坛友微信交流群
观测数是10个?

使用道具

报纸
taoyuanjl 发表于 2016-5-31 11:06:43 |只看作者 |坛友微信交流群
这样理解可以。

使用道具

地板
taoyuanjl 发表于 2016-5-31 23:48:30 |只看作者 |坛友微信交流群
这个问题我这样理解:
input语句具有自动重复读取数据集中多个观测数据的功能,当循环因超过终止值退出循环时,因数据集中还有数据,所以循环自动从最小值(i=1)开始重新执行循环。

使用道具

7
pobel 在职认证  发表于 2016-6-1 05:21:45 |只看作者 |坛友微信交流群
taoyuanjl 发表于 2016-5-31 23:48
这个问题我这样理解:
input语句具有自动重复读取数据集中多个观测数据的功能,当循环因超过终止值退出循环 ...
你应该看一看关于data步执行的内容(data loop:从“data”语句执行到“run“语句)。
这个例子是这样的:
第一个data-loop:
1,do 语句
i=1, 读进第一行
i=2,读进第二行
i=3,读进第三行;第二个input语句读进‘Eye/Dental’; 输出;
i=4, 读进第五行“Kelly ...”
i=5,读进第六行 “Smith...”;第二个input语句读进“HMO”;输出
i=6,不再满足do循环条件,跳出do循环
开始下一个data-loop,直到没有数据可读为止。

使用道具

8
taoyuanjl 发表于 2016-6-1 08:57:52 |只看作者 |坛友微信交流群
pobel 发表于 2016-6-1 05:21
你应该看一看关于data步执行的内容(data loop:从“data”语句执行到“run“语句)。
这个例子是这样的 ...
我认为我说的就是这个意思。谢谢!

使用道具

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

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

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

GMT+8, 2024-4-26 11:32