楼主: guanf1986
2344 4

sas一对一 by合并 [推广有奖]

  • 0关注
  • 0粉丝

已卖:424份资源

硕士生

12%

还不是VIP/贵宾

-

威望
0
论坛币
471 个
通用积分
0.1200
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1611 点
帖子
108
精华
0
在线时间
128 小时
注册时间
2009-3-7
最后登录
2020-4-9

楼主
guanf1986 发表于 2013-6-27 11:08:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有个比较现实的问题,不如,我有两张表,一个是买入记录表,一个是卖出记录表。买入表有n个字段,其中前几个是
字段A 字段B 字段C
1          x        y
1          a        b

卖出表也有n个字段,其中前几个是

字段A 字段D 字段E
1           c         d
1           g         h
买入表每一条记录可以认为是一个买入交易,卖出表每一条记录可以认为是一个卖出交易。两者链接的字段就是A。

前面两张表的综合意义在于,买入2个单位的1,再卖出2个单位的1。我现在要的效果是,我的每笔卖出对应一次前面的买入,每一笔买入(卖出)顶多与一笔卖出(买入)所对应。

所以我希望前面两个表的合并效果应该是:

字段A 字段B 字段C 字段D 字段E
1          x        y          c        d
1          a        b          g        h
或者

字段A 字段B 字段C 字段D 字段E
1          x        y          g        h
1          a        b          c        d


也就是说我不介意卖出记录冲销的具体是哪一笔买入记录,只要是字段A两者相同即可。但是我仅需要他冲销一笔记录。

如果用传统的merge or proc sql,都是one vs multiple的模式 ,目前的问题是,是否存在1v1的合并方式来合并两个表的记录呢?
二维码

扫码加我 拉你入群

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

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

关键词:一对一 proc sql Multiple multip Merge 一对一

讲究 但不将就!

沙发
guanf1986 发表于 2013-6-27 11:29:02
我需要将买入记录和卖出记录放到同一排,因为买入和卖出的时点决定该物品的应计利息。所以不能简单地proc means加总计算净头寸即可。
讲究 但不将就!

藤椅
yongyitian 发表于 2013-6-27 11:40:35
是不是这样
  1. data a;
  2. input A B $ C $;
  3. datalines;
  4. 1 x y
  5. 1 a b
  6. 2 x2 y2
  7. 2 a2 b2
  8. 2 a3 b3
  9. ; run;

  10. data b;
  11. input A D $ E $;
  12. datalines;
  13. 1 c d
  14. 1 g h
  15. 2 c2 d2
  16. 2 g2 h2
  17. ;
  18. proc sort data=a; by a; run;
  19. proc sort data=b; by a; run;

  20. data aa;
  21.      set a;
  22.      if first.a then id_a = 1;
  23.      else id_a+1;
  24. run;
  25. data bb;
  26.      set b;
  27.      if first.a then id_a = 1;
  28.      else id_a+1;
  29. run;

  30. proc sql;
  31.     create table ab as
  32.     select aa.*, bb.d, bb.e
  33.     from aa, bb
  34.     where aa.a=bb.a and aa.id_a = bb.id_a;
  35. quit;

  36. data a_b;
  37.     merge aa(in=ina)  bb(in=inb);
  38.     by a id_a;
  39.     if ina and inb;
  40. run;
复制代码

板凳
boe 发表于 2013-6-27 11:41:24
按A分组sum之后再冲岂不更好玩
Gorgeous girl , I love !

报纸
guanf1986 发表于 2013-6-27 14:10:07
yongyitian 发表于 2013-6-27 11:40
是不是这样
好像是可以的哦,多谢了。原来加一个序号,by序号合并就可以了,就这么简单。。
讲究 但不将就!

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

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