全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1954 6
2014-07-28
请教各位大神:

       小弟现在有两个表格。 表格1是事件发生的时间,格式如下:

FIRM      EVENTDATE
  A           20101025
  A           20120718
  B           19980101
.........       ..................


表格2是时间序列,表示每个公司,每个交易日的交易数量,其形式如下:


FIRM          DATE      SHARES
A          20101011      8000
A          20101012      1000
A          20101013        0
A          20101014        0
A          20101015        0

A          20101018      800
A          20101019      1000
A          20101020        0
A          20101021        0
A          20101022        0
A          20101025      600
... ......

现在想为表A中的每一个事件计算eventdate 前十交易日的交易量(SHARES)的累积值。以表A第一个事件为例:事件发生在2010年10月25号,那么事件前十交易日的累计交易数量为10800 (10月11到10月22的shares累加)。

请教一下各位这个过程应当如何实现。此外有两个问题需要考虑:第一个问题是需要考虑交易日。表B的原始数据中是把周末和假期自动去除的; 第二个问题是如果事件日之前的交易日不足十日(比如只有五日),那么 有多少便累加多少。

先谢谢了!
二维码

扫码加我 拉你入群

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

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

全部回复
2014-7-28 09:34:03
其实 你没必要考虑周6和周日,因为那2天不开盘,也可以等同于交易为0.
data a;
input firm(用时候把这部分去掉,防止提交改变字体)$ eventdate yymmdd8.@@;
cards;
A 20101025
A 20120718
B 19980101
;
run;

/****倒入数据集B*****/

data b;
input firm(用时候把这部分去掉,防止提交改变字体)$ date yymmdd8. SHARES@@;
cards;
B 19971231 30
B 19971230 20
A 20101011 8000
A 20101012 1000
A 20101013 0
A 20101014 0
A 20101015 0
A 20101018 800
A 20101019 1000
A 20101020 0
A 20101021 0
A 20101022 0
A 20101025 600
;
run;


/****汇总****/
proc sql;
create table c as
select a.firm,a.eventdate,b.date,sum(b.shares) as sum
from a,b
where a.firm=b.firm
and a.eventdate-14<=b.date<=a.eventdate-1
group by a.firm,a.eventdate;
quit;
二维码

扫码加我 拉你入群

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

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

2014-7-28 15:55:35
huntdreamer 发表于 2014-7-28 09:34
其实 你没必要考虑周6和周日,因为那2天不开盘,也可以等同于交易为0.
data a;
input firm(用时候把这部分去 ...
谢谢,我明白您的code中的逻辑。 但是还有一天eventdate+14<eventdate<eventdate_1这一句code可以保证选择出前十天的交易么?比如说,除了周末以外。如果还碰到其他节假日停盘的情况,那么这个code选出来的交易日可能会少于10天
二维码

扫码加我 拉你入群

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

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

2014-7-28 16:20:31
huntdreamer 发表于 2014-7-28 09:34
其实 你没必要考虑周6和周日,因为那2天不开盘,也可以等同于交易为0.
data a;
input firm(用时候把这部分去 ...
如果不考虑eventdate的逻辑,能否采取如同lag variablels的方法,察看某个时间日之前的十个observation?
二维码

扫码加我 拉你入群

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

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

2014-7-28 16:24:03
那也可以啊!LAG--lag10(var)
二维码

扫码加我 拉你入群

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

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

2014-7-28 19:14:22
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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