楼主: Lindsay林
2885 5

[问答] SAS的merge问题 [推广有奖]

  • 1关注
  • 1粉丝

大专生

20%

还不是VIP/贵宾

-

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

5论坛币
两个数据集cw1和gp1,有共同的stkcd、date,但是这两列只是部分数据一样,很多无法一一对应,现在想把两个表水平合并,先按照stkcd,再按date,匹配起来,没有的数值就空着,不知道代码怎么写,求大神赐教,谢谢!
屏幕快照 2018-07-30 下午10.42.48.png
屏幕快照 2018-07-30 下午10.42.56.png
cw.xls (735.5 KB)
gp.xls (33.5 KB)

最佳答案

whymath 查看完整内容

proc sort data = cw1; by stkcd date; run; proc sort data = gp1; by stkcd date; run; data out; merge cw1 gp1; by stkcd date; run;
关键词:一一对应 水平合并 数据集
沙发
whymath 发表于 2018-7-30 22:54:22 |只看作者 |坛友微信交流群
proc sort data = cw1;
by stkcd date;
run;

proc sort data = gp1;
by stkcd date;
run;

data out;
merge cw1 gp1;
by stkcd date;
run;
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

使用道具

藤椅
yuan_wang 发表于 2018-7-31 02:02:19 |只看作者 |坛友微信交流群
/* sort cw1 dataset */
proc sort data=cw1;
by stkcd date;
run;

title 'cw1';
proc print data=cw1;
run;


/* sort gp1 dataset */
proc sort data=gp1;
by stkcd date;
run;

title 'gp1';
proc print data=gp1;
run;


/* merge cw1 and gp1 */
data new;
merge cw1 gp1;
by stkcd date;
run;

title 'new';
proc print data=new;
run;
已有 1 人评分论坛币 收起 理由
admin_kefu + 30 热心帮助其他会员

总评分: 论坛币 + 30   查看全部评分

使用道具

proc sql noprint;
   create table new as
   select a.*,b. p,b.m,b.pb
   from cw1 as a left join gp1 as b
   on a.stkcd =b.stkcd and a.date =b.date
   order by stkcd, date;
quit;

使用道具

报纸
qiangwei2017 学生认证  发表于 2018-8-6 09:46:32 |只看作者 |坛友微信交流群
头顶妖娆小宇宙 发表于 2018-8-5 21:12
proc sql noprint;
   create table new as
   select a.*,b. p,b.m,b.pb
left join 只会输出cw1中的全部变量和gp1中的部分变量,这里应该用full join

使用道具

qiangwei2017 发表于 2018-8-6 09:46
left join 只会输出cw1中的全部变量和gp1中的部分变量,这里应该用full join
确实 没有看清楼主的要求 哈哈 这里用full join 才对

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 06:35