全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3354 5
2012-08-07
复制代码
为什么上述程序最后出现了4个观测中x都有值呢,我想着,只有第一个观测x=1000, 其它都应该为空啊?不是吗?求高手解答,因为只有_n_=1时才set a1, 其它时候都不set了
二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-7 22:53:46
两个set语句,会retain第一个dataset的观察值的。这个是the little sas book里面的例子
二维码

扫码加我 拉你入群

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

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

2012-8-8 09:36:35
还是不是很懂,高手可否详细解释一下,假如最后一个程序是 data e; set a1; set a2; run;\
就只有一个观测,两者的区别是什么
二维码

扫码加我 拉你入群

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

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

2012-8-8 14:36:29
您好,它们的区别在于:
1.第一个程序,sas首先在内存中开辟一个pdv,读取数据集a1的第一个观测,读取变量x的值并保留。   再读取第二个数据集a2的变量y,输出x和y并返回到data   此时if语句不再执行,读取数据集a2的第二条观测,输出x和y,如此下去直到a2读完。
2.第二个程序,编译后,内存出现两条数据指针,一条指向数据集a1,一条指向数据集a2,同时只产生一个pdv,读入a1和a2中所有变量   最后得到的数据集观测数总是为数据集a1和a2中观测数较少的那一个。。。。明白了吗?
二维码

扫码加我 拉你入群

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

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

2012-8-8 15:50:58
不是还有set a2吗
二维码

扫码加我 拉你入群

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

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

2012-8-9 07:59:12
为什么上述程序最后出现了4个观测中x都有值呢,我想着,只有第一个观测x=1000, 其它都应该为空啊?

No. All variable on a data set is retained automatically.  X is a variable on a1.

不是吗?求高手解答,因为只有_n_=1时才set a1, 其它时候都不set了

Yes. Set is a executable statement. it only executes once when _n_=1.  


Here is an example to help you understand it. I add additional observation on data set a1.

   data a1;
    input x;
    cards;
    1000
    200
    ;
    run;
    data a2;
    input y;
    cards;
    123
    234
    23
    456
    ;
    run;

    data e;
    if _n_=1 then set a1; set a2;
    run;

        proc print;run;

        data e;
    if _n_=1 then set a1(firstobs=2); set a2;
    run;

        proc print;run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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