楼主: lemonxinran
15227 10

sas多对一,多对多合并问题 [推广有奖]

  • 0关注
  • 1粉丝

已卖:2份资源

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
1155 个
通用积分
6.0000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
10334 点
帖子
188
精华
0
在线时间
605 小时
注册时间
2010-10-25
最后登录
2025-4-2

楼主
lemonxinran 发表于 2013-1-4 22:10:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有两个数据集,第一个为info,包括stkcd,date,price,数据举例如下:stkcd date price
000001 1998-08-20 5
000001 1998-08-21 5.5
600001 1998-08-20 6.5
600002 1998-08-20 7.5
600004 1998-08-21 8
......
第二个为市场数据market,包括date,market_index;
date market_index
1998-08-20 0.56
1998-08-21 0.57
.......
现在需要在第一个数据的每支股票后面加上市场指数,很明显,要用date来合并,但是info中的date并不是唯一的,我这样写:
proc sort data=info;by date;run;
proc sort data=market;by date;run;
proc sql;
create table buyer_price as
select a.*,b.market_index
from info a left join market b on a.date=b.date;
quit;

请问我这样写对吗?还有更好的方法吗?另外,我的这种方法是否适用于多对多合并?
谢谢解惑。
二维码

扫码加我 拉你入群

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

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

关键词:left join proc sql market Create Select market price

沙发
ziyenano 发表于 2013-1-4 22:26:17
market中的data唯一吗?如果唯一就没有问题
而且不需要事先排序

藤椅
lemonxinran 发表于 2013-1-4 22:44:27
ziyenano 发表于 2013-1-4 22:26
market中的data唯一吗?如果唯一就没有问题
而且不需要事先排序
谢谢!market中的date唯一。
我还有一个数据集,这个数据集包括:stkcd annoucement_date
举例如下:
stkcd annoucement_date
000001 1998-09-20
000001 2002-03-20
000002 1999-09-31
......
现在需要将其和上面合并好的数据集buyer_price合并,buyer_price中的stkcd也不是唯一的。
也就是说只能通过stkcd合并,但两个数据集中的stkcd并不唯一。
这样应该如何合并?谢谢您!

板凳
ziyenano 发表于 2013-1-4 22:53:09
有没有其他限制条件,比如buyer_price中的date和这里的annoucement_date

报纸
lemonxinran 发表于 2013-1-4 23:12:56
ziyenano 发表于 2013-1-4 22:53
有没有其他限制条件,比如buyer_price中的date和这里的annoucement_date
没有,buyer_price中的date是股票的每个交易日,annoucement_date是公告日,我需要将两张表合并在一起,计算两个日期之间差了多少天。一个股票可以有多个事件公告日,所以第一个表stkcd不唯一,一个股票每天都要交易,所以,第二个表stkcd不唯一。这样可以在sas中实现吗?谢谢您!

地板
ziyenano 发表于 2013-1-4 23:23:53
以这个股票为例,匹配出来时这个结果
stkcd    date            annoucement_date
000001 1998-08-20  1998-09-20
000001 1998-08-20   2002-03-20
000001 1998-08-21   2002-03-20
000001 1998-08-21   1998-09-20
需要修正吗

7
lemonxinran 发表于 2013-1-4 23:29:40
ziyenano 发表于 2013-1-4 23:23
以这个股票为例,匹配出来时这个结果
stkcd    date            annoucement_date
000001 1998-08-20  19 ...
不需要修正。如果表一中一支股票有两个记录,表二中同样的股票有三个记录,我最终的表就会生成2*3=6个记录。这样怎样在sas中实现呢?

8
ziyenano 发表于 2013-1-4 23:32:09
create table buyer_price as
select a.*,b.market_index,c.annoucement_date
from info a left join market b on a.date=b.date
inner join 最后一个数据集名字 c
on a.stkcd =c.stkcd ;
quit;
已有 1 人评分经验 收起 理由
eijuhz + 40 精彩帖子

总评分: 经验 + 40   查看全部评分

9
lemonxinran 发表于 2013-1-4 23:34:19
ziyenano 发表于 2013-1-4 23:32
create table buyer_price as
select a.*,b.market_index,c.annoucement_date
from info a left join mar ...
非常感谢您!

10
SAS新手 发表于 2013-11-20 22:21:32
学习了,谢谢两位!

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

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