楼主: littlejay
4074 8

combining data sets中IN=option的问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

45%

还不是VIP/贵宾

-

威望
0
论坛币
330 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
252 点
帖子
8
精华
0
在线时间
43 小时
注册时间
2010-3-14
最后登录
2011-6-2

楼主
littlejay 发表于 2011-4-26 05:29:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
下面的程序运行完以后,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.
二维码

扫码加我 拉你入群

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

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

关键词:combining Option ning Data Sets Data Option combining Sets

回帖推荐

sas_user 发表于2楼  查看完整内容

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 ...

本帖被以下文库推荐

沙发
sas_user 发表于 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
自己的理解。请指点。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
qiuya 发表于 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;

就可以了。

板凳
sas_user 发表于 2011-4-26 08:58:38
3# qiuya
应该先看清需要。。学习了。

报纸
littlejay 发表于 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 ...
谷歌到这道题,看到这个答案很清晰。多谢!

7
bianyue 发表于 2015-11-12 21:36:56
SET不会合并数据,比如两个数据集:
name age
Bruce 30
Dan 35
name salary
Bruce 40000
Bruce 35000
Dan 37000
Dan .
用set合并的结果是 Obs    name     age    salary

                                                  1     bruce     30         .
                                                  2     bruce      .     40000
                                                  3     bruce      .     35000
                                                  4     dan       35         .
                                                  5     dan        .     37000
                                                  6     dan        .         .
所以没有一个数据是同时从两个数据集中读取的,用merge就不会出现这个结果

8
wenling15 发表于 2015-11-13 00:05:10 来自手机
Thanks

9
teqel 发表于 2015-11-13 12:11:50
其实想考的是和下面的区别:
data work.empsalary;
set work.people (in = inemp);
set work.money(in = insal);
if insal and inemp;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 03:53