全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2220 5
2011-02-25
data b;
a=1;
b=2;
c=3;
run;
data c;
input x1 x2 x3;
cards;
12 34 23
32 23 23
32 43 43
;
run

data a;
if _n_=1 then set b;
set c;
run;
c是可以是任意数据集,运行完了之后b中的数据全部加到c数据集的最左边了,是怎么回事?那位大侠能解释一下
if _n_=1是什么意思
二维码

扫码加我 拉你入群

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

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

全部回复
2011-2-25 13:43:13
就是在第一个data step循环时可用来测试的变量,_N_=1就表示第一个观测, _N_>1就表示以后的观测。1 2 3 会出现在每一个观测前面因为实际上用了两个set语句,而且有6个变量。如果拿掉_N_=1结果就完全不一样。我也有一个问题:为什么 1 2 3 在第二个和第三个观测中出现,难道它们被retain了吗?
复制代码
二维码

扫码加我 拉你入群

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

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

2011-2-26 20:26:36
是否可以从SAS读取数据的机制来理解,SAS先把这些数据集放在内存的一个缓存中,其内部有一个循环来读取数据的每一条。在第一个set中,以2楼的为例,把3个变量都读进来,而后面的set接着运行,读取第一条,第二条,等等,相当于两个循环。
二维码

扫码加我 拉你入群

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

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

2011-2-26 22:17:30
2# Actree
用set读的数据,SAS在DATA步自循环时会被自动Retain。两个SET连用,类似于Merge语句。具体机制可参看Help文件。
二维码

扫码加我 拉你入群

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

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

2011-2-26 22:53:53
噢,原来如此,多谢 4# webgu
二维码

扫码加我 拉你入群

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

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

2011-2-27 10:49:03
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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