楼主: darienzhang
1170 7

一个关于_n_的问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

91%

还不是VIP/贵宾

-

威望
0
论坛币
341 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
15074 点
帖子
26
精华
0
在线时间
200 小时
注册时间
2013-10-15
最后登录
2015-9-6

楼主
darienzhang 发表于 2015-7-11 23:40:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

复习adv的时候我跑了一下这个程序

data bbb;

input sumy ;

datalines;

36

run;


data aaa;   

     if _n_ = 1  then set bbb;

         run;

  proc print;run;


结果是这样的:




[td]
Obssumy
136
236



请问为什么会有两个记录啊?这个if _n_ 感觉很微妙,不是很清楚具体的data步的循环过程,真心求教,多谢~





二维码

扫码加我 拉你入群

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

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

关键词:Lines data步 print Input Data 程序 记录

Screen Shot 2015-07-12 at 10.46.34 AM.png (109.58 KB)

Screen Shot 2015-07-12 at 10.46.34 AM.png

沙发
zhengbo8 发表于 2015-7-12 10:06:01
只有一个记录,您可能弄错了

藤椅
苹果叶 在职认证  发表于 2015-7-12 10:49:02
我觉得你这个code 是有问题的,data aaa,一个东西都没有,哪里来_N_ = 1, 所以sas 报了个 NOTE: DATA STEP stopped due to looping.

板凳
darienzhang 发表于 2015-7-12 10:51:16
zhengbo8 发表于 2015-7-12 10:06
只有一个记录,您可能弄错了
我试着又跑了一下,把“=1”去掉倒是只有一条记录了。。。

报纸
darienzhang 发表于 2015-7-12 10:56:17
苹果叶 发表于 2015-7-12 10:49
我觉得你这个code 是有问题的,data aaa,一个东西都没有,哪里来_N_ = 1, 所以sas 报了个 NOTE: DATA STEP ...
哦,这号也想问一下的,这个looping是指?是不是sas它本来想_n_一直loop下去的然后到_n_=2断掉了?求指导~

地板
18129380375 学生认证  发表于 2015-7-12 19:01:20 来自手机
请问那里有advance的书呀,急求

7
yongyitian 发表于 2015-7-12 22:10:50
如果数据步里没有读取数据的 set,input 语句, 那么该数据步迭代一次后终

止, 并将 "DATA step stopped due to looping message" 写入到 log 中。

楼上的例子中 if _n_ = 1 语句后面没有其他语句,直接运行一次 run 语句,

然后返回data语句,做第二次循环。

当 _n_=2 时没有找到 set, input 语句,按上面的说法再运行一次 run,然后

停止数据步. 所以共有两条数据.

http://support.sas.com/kb/8/914.htm

l
  1. data have;
  2. input sumy ;
  3. datalines;
  4. 36
  5. ; run;

  6. data aaa;   
  7.   put 'Loop: ' _n_  +5 _all_;
  8.     if _n_ = 1 then do;
  9.                set have;  put 'B_' +11  _all_; end;
  10.   put 'output_ ' +5  _all_ /;
  11. run;

  12. data bbb;   
  13.   put 'Loop:  ' _n_ +5  _all_;
  14.     if _n_ = 1 then do;
  15.                set have;  put 'B_' +11  _all_; end;
  16.     else stop;
  17.   put 'output_ ' +5  _all_ /;
  18. run;

  19. data ccc;   
  20.   put 'Loop:  ' _n_  +5 _all_;
  21.     if _n_ = 1 then do;
  22.                set have;  put 'B_' +11  _all_; end;
  23.     stop;
  24.   put 'output_ ' +5   _all_ /;
  25. run;

  26. data ddd;   
  27.   put 'Loop:  ' _n_  +5   _all_;
  28.   set have;
  29.   put 'output_ ' +5   _all_/ ;
  30. run;

  31. data eee;   
  32.   put 'Loop:  ' _n_  +5   _all_;
  33.    if _n_ = 1  then do;
  34.                set have;  put 'B_' +11  _all_; end;
  35.    set have;
  36.   put 'output_ ' +5   _all_/ ;
  37. run;
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
Tigflanker + 5 + 3 + 3 + 3 一下子不容易看明白

总评分: 论坛币 + 5  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

8
统计2008陈利 发表于 2015-7-17 15:02:12
学习了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-5 09:55