全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1633 8
2011-06-14
为什么z的值可以在第三个data语句每一个循环可以保留下来不变?


data a;
input z;
datalines;
2
;
run;
data b;
input x $ y;
datalines;
a 1
b 1
c 1
;
run;
data c;
set b;
if _n_=1 then set a;
run;
proc print data=c;
run;
二维码

扫码加我 拉你入群

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

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

全部回复
2011-6-14 05:18:46
那是因为你在第三个data用了if _n_=1 then set a;而将z的值在第三个data中的每一个循环保留下来而不变的!若将if _n_=1 then set a;改成if _n_=2 then set a;那就只能有两个循环保留下z的值。若将if _n_=1 then set a;改成if _n_=3 then set a;那就只能有最后一个循环保留下z的值。若将if _n_=1 then set a;改成if _n_=4 then set a;那就连最后一个循环也不能保留下z的值来。但你仍然引进了set a;而不保留任何z的值。
二维码

扫码加我 拉你入群

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

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

2011-6-14 07:34:16
一般人是不懂的
我是一般人
所以我不懂
帮楼主顶上
二维码

扫码加我 拉你入群

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

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

2011-6-14 08:28:49
把数据集b中再添加变量z,然后运行,你就知道这个SET是怎样起作用的。
data a;
input z;
datalines;
2
;
run;
data b;
input x $ y z;
datalines;
a 1 4
b 1 3
c 1 5
;
run;
data c;
set b;
if _n_=1 then merge a;
run;
proc print data=c;
run;
二维码

扫码加我 拉你入群

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

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

2011-6-14 12:43:35
set 数据集中的变量自动retain
二维码

扫码加我 拉你入群

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

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

2011-6-14 16:47:36
两个set 的时候,有两个指针,分别指向两个set 的数据集,因为你用到了if_n_=1,也就是说,只在第一次循环(这里的循环,指运行完一个data过程,即运行完一个run;)的时候才set a ,也就说说第一个指针只指向a 的第一条记录,保持在那里不动了,即使a里面有好多观测,也只指向第一个观测,。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群