全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3996 8
2011-04-26
下面的程序运行完以后,work.empsalary中没有observation,请问是因为没有BY语句吗?还是其他的原因?非常感谢~

data work.empsalary;
set work.people (in = inemp) work.money(in = insal);
if insal and inemp;
run;

The SAS data set WORK.PEOPLE has 5 observations, and the data set WORK.MONEY has 7 observations.
二维码

扫码加我 拉你入群

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

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

全部回复
2011-4-26 08:06:51
set的定义是创立一个新的数据集。SAS先从左边的dataset (people)读起。in=1的意思是老的dataset中对新的dataset 有贡献的obs。当dataset people 对empsalary 提供数据时,对于所有的obs,in=1. 这个时候对于money里所有的obs,in=0。因为还没有被开始读。直到people读完了,SAS才开始读money. 这时money里的所有obs in=1 而people里的obs in=0。二者没有交集。所以新dataset 是空的。
举例如下:
p=1 m=0 var_p1=xx  var_p2=xx var_m1=. var_m2=.
p=0 m=1 var_p1=.   var_p2=.  var_m1=xx  var_m2=xx
自己的理解。请指点。
二维码

扫码加我 拉你入群

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

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

2011-4-26 08:21:28
littlejay 发表于 2011-4-26 05:29
下面的程序运行完以后,work.empsalary中没有observation,请问是因为没有BY语句吗?还是其他的原因?非常感谢~

data work.empsalary;
set work.people (in = inemp) work.money(in = insal);
if insal and inemp;
run;

The SAS data set WORK.PEOPLE has 5 observations, and the data set WORK.MONEY has 7 observations.
我觉得你把Merge 和 Set有点搞混了, 请问下你写这个code是目的是什么?
如果是横向合并数据, 那你得用
data work.empsalary;
Merge work.people (in = inemp) work.money(in = insal);
by xxxx;
if insal and inemp;
run;

如果你是想竖向合并数据, 那你不比用 in 的选项, 简单写作:

data work.empsalary;
set work.people work.money;
run;

就可以了。
二维码

扫码加我 拉你入群

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

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

2011-4-26 08:58:38
3# qiuya
应该先看清需要。。学习了。
二维码

扫码加我 拉你入群

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

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

2011-4-26 21:45:58
谢谢大家~谢谢sas_user!我明白你的解释了,很有帮助!
这不是我写的程序,是sas base 考试的一道题目,所以有点迷糊。。。
二维码

扫码加我 拉你入群

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

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

2014-4-23 16:12:22
sas_user 发表于 2011-4-26 08:06
set的定义是创立一个新的数据集。SAS先从左边的dataset (people)读起。in=1的意思是老的dataset中对新的d ...
谷歌到这道题,看到这个答案很清晰。多谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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