本人刚接触SAS不久,最近看little SAS book 其中有一段程序如下:
data a;
input style $ 1-15 type $ sales;
datalines;
Max Flight running 1930
Zip Fit Leather walking 2250
Zoom Airborne unning 4150
Light Step walking 1130
Max Step Woven walking 2230
Zip Sneak c-train 1190
;
run;
proc means data=a noprint;
var sales;
output out=b sum(sales)=total;
run;
data x ;
if _n_=1 then set b;
set a;
run;
当然,数据集的名字,便于书写,我有所更改,但应该不妨碍阅读。
麻烦哪位高手详细解释一下
if _N_=1 then set b;
set a;
的原理。
因为按照我的理解 _N_=1时 set b; set a; 然后进入第二次循环,这时候_N_=2 应该直接set a;
那么我就不理解为什么data x的结果会是
Obs_TYPE__FREQ_totalstyletypesales
10612880Max Flightrunning1930
20612880Zip Fit Leatherwalking2250
30612880Zoom Airbornerunning4150
40612880Light Stepwalking1130
50612880Max Step Wovenwalking2230
60612880Zip Sneakc-train1190
因为在我看来 在_N_=2以后 不应该再出现set b;
于是我修改了程序 去掉了set a;
我想看看在没有set a; 仅仅只有
data x ;
if _n_=1 then set b;
run;
这样的条件下, 运行结果会是怎么样。 结果如下:
Obs_TYPE__FREQ_total
10612880
20612880
那么 我的疑问是 为何会有2条记录呢?...
所以麻烦哪位高手详细解释一下这段程序的运行原理,谢谢!!!
ps: 之前有一次发帖被管理员删除,说违反论坛规定,诚不知何处有所违反。
若此次不慎违反相关规定还烦请留言告知,下次定当改正,此次还望手下留情。
敬谢!