2477 8

[有偿编程] 【求助】SAS合并表格时编程遇到问题求解答~~~ [推广有奖]

  • 0关注
  • 0粉丝

初中生

9%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
66 点
帖子
14
精华
0
在线时间
6 小时
注册时间
2014-1-12
最后登录
2014-2-27

楼主
清禅★/跳跳 发表于 2014-2-22 10:27:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我现在想要做的是:一个表格是etdaily2:公司、交易日期、交易日期编号(1234……)、日收益率;一个表格是m1:公司、公告日期、公告日期对应的交易日期编号(eg.237)。现在想把两个表格合并,得到m2:公司、公告日期、交易日期、日收益率(其他字段不需要去掉)。我用的命令是:
data m2;
merge etdaily2(in=a) m1(in=b);
by firm;
if a=1 and b=1;
run;
但现在的问题是,有些公司不止一次公告日期,但是按照这个命令只能对应出一次公告日期。我最后的目标是得到公告日期前后150天的交易日期日收益率,现在etdaily2中的交易日期长达4年,数据是足够的,但是不知道怎样才能得到每次公告所对应的交易日期?
论文眼瞅着要开天窗了,跪谢大神帮助!!!
二维码

扫码加我 拉你入群

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

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

关键词:问题求解 合并表格 求解答 Daily Merge 收益率 公告

沙发
清禅★/跳跳 发表于 2014-2-22 14:27:26
顶顶顶~~~求大神求解答求编程非常感谢啊/(ㄒoㄒ)/~~ (┳_┳)...

藤椅
清禅★/跳跳 发表于 2014-2-22 16:34:47
刚刚我表述的不是很清楚,我重新表达一遍,非常感谢~~~!!我想要的是把表a和表b合并:
表a:
公司  公告日期  公告日期对应的交易日期编号
COM1  20120102      112
COM1  20120104      114
COM2  20120102       112
表b:
公司   交易日期   交易日期编号   日收益率  
COM1  20120101    111               x1
COM1  20120102     112              x2
COM1  20120103     113              x3
COM1  20120104     114              x4
COM2  20120101     111              y1
我现在想把两个表合并,使其得到一张表包括了公司、公告日期、交易日期、日收益率,即:
公司    交易日期     公告日期     日收益率   交易日期编号
COM1 20120101   20120102    X1           111
COM1 20120102   20120102    X2           112
COM1 20120103   20120102    X3           113
COM1 20120104   20120102    X4           114
COM1 20120101   20120104    X1           111
COM1 20120102   20120104    X2           112
COM1 20120103   20120104    X3           113
COM1 20120104   20120104    X4           114
COM2 20120101   20120102    Y1           111
我现在用的命令是:
data c;
merge a(in=a) b(in=b);
by firm;/公司/
if a=1 and b=1;
run;
但是这样子每个公司只能对应出一个公告日期,即20120102的那四条,怎样能让它每个公告日期都对应上呢?

板凳
你的太阳 发表于 2014-2-22 16:52:30
  1. data test;
  2.   informat comname $8. pdate anydtdte. pnumber 8.;
  3.   input comname $  pdate pnumber ;
  4.   format pdate date9.;
  5.   cards;
  6. COM1  20120102      112
  7. COM1  20120104      114
  8. COM2  20120102       112
  9. ;
  10. run;

  11. data test1;
  12.   informat comname $8. bdate anydtdte. bnumber 8. int $8.;
  13.   input comname $  bdate bnumber int ;
  14.   format bdate date9.;
  15.   cards;
  16. COM1  20120101    111               x1
  17. COM1  20120102     112              x2
  18. COM1  20120103     113              x3
  19. COM1  20120104     114              x4
  20. COM2  20120101     111              y1
  21. ;
  22. run;

  23. proc sql;
  24.   create table all as
  25.   select test1.comname,test1.bdate, test.pdate, test1.int,test1.bnumber
  26.   from test full join test1
  27.   on test.comname = test1.comname
  28.   order by comname, pdate, bdate
  29.   ;
  30. quit;

  31. proc print;
  32. run;
复制代码

报纸
清禅★/跳跳 发表于 2014-2-22 17:11:19
你的太阳 发表于 2014-2-22 16:52
非常非常感谢您的回答~~但请原谅我是个菜鸟,我在试运行的时候,31行的“;”处给出了错误提示:
;
     -
     22
ERROR 22-322: 语法错误,期望下列之一: 名称, 带引号的字符串, 数值常数, 日期时间常数, 缺失值, BTRIM, INPUT, PUT, SUBSTRING,
              USER.

麻烦可以解答一下吗?谢谢~

地板
清禅★/跳跳 发表于 2014-2-22 19:09:33
嘤嘤嘤继续求助~~~~~

7
清禅★/跳跳 发表于 2014-2-22 19:18:32
你的太阳 发表于 2014-2-22 16:52
亲,我又试了一下,把您的代码复制过去,是可以运行出来的,但我修改成我自己的数据集和变量名,结果就出现了上楼说的,在“;”地方提示错误的信息,请问是怎么回事呢?

8
清禅★/跳跳 发表于 2014-2-22 19:41:01
你的太阳 发表于 2014-2-22 16:52
我把命令放到一行上面结果成功啦!!!真心太感谢了!!!

9
jungsee 发表于 2014-2-23 15:47:41
清禅★/跳跳 发表于 2014-2-22 19:41
我把命令放到一行上面结果成功啦!!!真心太感谢了!!!
其实不用这么麻烦,不就是个重复的问题吗(firm+data),你完全可以把这种情况看做不同的事件就可以了,我也是研究公司财务的,哈哈  blog.sina.com.cn\jungsee  

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

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