全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4080 12
2009-03-02


要被这个数据搞发疯了咯,呜呜呜。。。知道怎么弄的同学帮帮忙吧,谢谢啦~~~

我有两个数据集,一个是每只股票每天的超常收益,另一个是每只股票每年财务表报出日的收益差异数据。我把每只股票每天的数据和当年该只股票财务报表报出日的差异数据合并起来。应该有点没讲明白,大概就是我下面简化的数据的样子。

data1

stock                   date                    abnormalreturn

A                  20040311                      0.11

A                  20040312                      0.1

A                   20040313                     0.2

A                   20040314                     0.1

                        ................

A                   20050318                    0.2

A                    20050319                   0.3

                       .................

B                     .................

data2

stock                 dateann                           dif

A                     20040311                      0.1

A                     20050317                      0.2

A                     20060314                       0.3

                         ....................

B                        ..................

想要合并成的数据是这样的

stock                    date                         dateann                 abnormalreturn             dif

A                         20040311                 20040311                 0.11                           0.1

A                         20040312                  20040311                 0.1                             0.1

A                          20040313                 20040311                  0.2                             0.1

                                  ....................................

谁能帮帮我。。。谢谢谢谢啦

[em01]

[此贴子已经被作者于2009-3-2 10:58:35编辑过]

二维码

扫码加我 拉你入群

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

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

全部回复
2009-3-2 05:28:00
直接用merge,by stock。
二维码

扫码加我 拉你入群

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

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

2009-3-2 07:43:00

The following is the SQL inner join.

data data1;
  input stock $ date abnormalreturn;
datalines;
A                  20040311                      0.11
A                  20040312                      0.1
A                   20040313                     0.2
A                   20040314                     0.1
; run;
data data2;
   input stock $ dateann dif;
datalines;
A                     20040311                      0.1
A                     20050317                      0.2
A                     20060314                       0.3
; run;
proc sql;
   select a.stock, date, dateann, abnormalreturn,  dif
   from data1 a, data2 b
   where a.stock=b.stock
   order by a.stock, dateann, date;
quit;

output
 stock         date   dateann  abnormalreturn       dif
-----------------------------------------------------------------
A         20040311  20040311            0.11       0.1
A         20040312  20040311             0.1       0.1
A         20040313  20040311             0.2       0.1
A         20040314  20040311             0.1       0.1
A         20040311  20050317            0.11       0.2
A         20040312  20050317             0.1       0.2
A         20040313  20050317             0.2       0.2
A         20040314  20050317             0.1       0.2
A         20040311  20060314            0.11       0.3
A         20040312  20060314             0.1       0.3
A         20040313  20060314             0.2       0.3
A         20040314  20060314             0.1       0.3

二维码

扫码加我 拉你入群

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

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

2009-3-2 08:31:00

楼主需要首先自己问自己一个问题,在最后的数据集里出现两个日期date何dateann是不是有意义。我觉得完全没有意义。

第一步,改名:

data2;

    set data2;

    rename dateann = date;

run;

第二步,重新排序,

proc sort data=data1;

    by stock date;

run;

proc sort data=data2;

    by stock date;

run;

第三步,合并,

    data all;

        merge data1 data2;

        by stock date;

    run;

二维码

扫码加我 拉你入群

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

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

2009-3-2 11:00:00

谢谢啦,不过直接by merge 肯定不可以的

二维码

扫码加我 拉你入群

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

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

2009-3-2 11:04:00

to chengsm13

谢谢啦。。。不过我是要date和dateann两个数据的,后面还有操作需要两者之间的关系。。。

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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