楼主: allen802
1417 4

[原创博文] set 问题请教 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

31%

还不是VIP/贵宾

-

威望
0
论坛币
133 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1926 点
帖子
75
精华
0
在线时间
170 小时
注册时间
2007-3-8
最后登录
2015-8-10

楼主
allen802 发表于 2010-8-2 12:21:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data a;
       input name$ score;
cards;
li 91
chen 95
sun 88
;
run;

data b;
       if  _n_=1 then set a;
run;

数据集b的记录是:
name score
li 91
li 91

为何会是这样的结果啊?
能具体解释下这其中set的运行机理吗?疑惑.
谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:Set score Input cards name 记录

沙发
crackman 发表于 2010-8-2 12:46:01
data a;
       input name$ score;
cards;
li 91
chen 95
sun 88
;
run;

data b;
       if _n_=1 then set a;
           else stop;
run;

藤椅
allen802 发表于 2010-8-2 12:48:29
谢谢,我只是想请教为何出现的是两条记录,而且都是a数据集的第一条记录.在sas里面是如何运行的?

板凳
pobel 在职认证  发表于 2010-8-2 13:09:17
198  data b;
199     put _all_;
200     if _n_=1 then set a;
201     put _all_;
202     put "-------------";
203  run;

name=  score=. _ERROR_=0 _N_=1
name=li score=91 _ERROR_=0 _N_=1
-------------
name=li score=91 _ERROR_=0 _N_=2
name=li score=91 _ERROR_=0 _N_=2
-------------
NOTE: DATA STEP stopped due to looping.
NOTE: There were 1 observations read from the data set WORK.A.
NOTE: The data set WORK.B has 2 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds

First loop: _N_=1, SAS 读取第一行, li  91; 并输出到b

Second loop: _N_=2, 此时PDV中name=li, score=91, 因为if 语句不满足,所以不再执行set动作,PDV中的值也就不会更新,之后输出到b;

由于没有要求SAS继续读取数据,此时SAS停止此data step。
已有 1 人评分学术水平 热心指数 收起 理由
crackman + 1 + 1 我很赞同

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

和谐拯救危机

报纸
pobel 在职认证  发表于 2010-8-2 13:10:26
210  data b;
211     put _all_;
212     if _n_=1;
213     set a;
214     put _all_;
215     put "-------------";
216  run;

name=  score=. _ERROR_=0 _N_=1
name=li score=91 _ERROR_=0 _N_=1
-------------
name=li score=91 _ERROR_=0 _N_=2
NOTE: DATA STEP stopped due to looping.
NOTE: There were 1 observations read from the data set WORK.A.
NOTE: The data set WORK.B has 1 observations and 2 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.04 seconds

如果用if statement,就不会重复了。
和谐拯救危机

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 22:51