楼主: Imasasor
3390 5

[原创博文] 关于两个set的问题 [推广有奖]

  • 1关注
  • 64粉丝

VIP

已卖:215份资源

学科带头人

33%

还不是VIP/贵宾

-

TA的文库  其他...

超哥喜欢的文章

威望
1
论坛币
47033 个
通用积分
3.1376
学术水平
238 点
热心指数
246 点
信用等级
231 点
经验
37132 点
帖子
849
精华
3
在线时间
2235 小时
注册时间
2012-7-4
最后登录
2024-10-10

初级学术勋章 初级热心勋章 初级信用勋章 中级热心勋章 中级学术勋章

楼主
Imasasor 发表于 2012-8-7 22:30:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. data a1;
  2. input x;
  3. cards;
  4. 1000
  5. ;
  6. run;
  7. data a2;
  8. input y;
  9. cards;
  10. 123
  11. 234
  12. 23
  13. 456
  14. ;
  15. run;

  16. data e;
  17. if _n_=1 then set a1; set a2;
  18. run;
复制代码
为什么上述程序最后出现了4个观测中x都有值呢,我想着,只有第一个观测x=1000, 其它都应该为空啊?不是吗?求高手解答,因为只有_n_=1时才set a1, 其它时候都不set了
二维码

扫码加我 拉你入群

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

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

关键词:Set Input cards 求高手解答 Data 程序

回帖推荐

bobguy 发表于6楼  查看完整内容

为什么上述程序最后出现了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 ...

沙发
hcydlee 发表于 2012-8-7 22:53:46
两个set语句,会retain第一个dataset的观察值的。这个是the little sas book里面的例子
80 字节以内
不支持自定义 Discuz! 代码

藤椅
Imasasor 发表于 2012-8-8 09:36:35
还是不是很懂,高手可否详细解释一下,假如最后一个程序是 data e; set a1; set a2; run;\
就只有一个观测,两者的区别是什么
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

板凳
1000720119 学生认证  发表于 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中观测数较少的那一个。。。。明白了吗?

报纸
lynette_89 发表于 2012-8-8 15:50:58
不是还有set a2吗

地板
bobguy 发表于 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;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhentao + 1 + 1 + 1 易懂,赞。

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

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

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