楼主: 84562
1792 4

[原创博文] 请问如何merge相同的部分? [推广有奖]

  • 0关注
  • 0粉丝

已卖:32份资源

本科生

27%

还不是VIP/贵宾

-

威望
0
论坛币
29 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1303 点
帖子
44
精华
0
在线时间
94 小时
注册时间
2011-1-16
最后登录
2021-5-23

楼主
84562 发表于 2012-7-14 23:27:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
id        year        state
1        2001        A
2        2001        A
3        2001        A
5        2001        A
7        2001        A

id        year        state
2        2002        B
4        2002        B
5        2002        B
6        2002        B

想要结果
id        year        state
2        2001        A
2        2002        B
5        2001        A
5        2002        B






我用
data test1;
   input id        year        state$5.;
   cards;
1        2001        A
2        2001        A
3        2001        A
4        2001        A
7        2001        A
run;

data test2;
   input id        year        state$5.;
   cards;
2        2002        B
4        2002        B
5        2002        B
6        2002        B
;run;

data need;
merge test1(in=x) test2(in=y);
by id;
if x=1 and y=1;
run;



只能得到
id        year        state
2        2002        B
5        2002        B



沒有了2001年的部分
二维码

扫码加我 拉你入群

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

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

关键词:Merge State Input cards year 如何

沙发
YueweiLiu 发表于 2012-7-15 00:30:58
这个用merge倒麻烦了。
  1. data test1;
  2.    input id year state :$5.;
  3.    cards;
  4. 1        2001        A
  5. 2        2001        A
  6. 3        2001        A
  7. 5        2001        A
  8. 7        2001        A
  9. run;

  10. data test2;
  11.    input id year state :$5.;
  12.    cards;
  13. 2        2002        B
  14. 4        2002        B
  15. 5        2002        B
  16. 6        2002        B
  17. ;run;

  18. data tmp;
  19.         set test1 test2;
  20. run;
  21. proc sort data=tmp;
  22.         by id year;
  23. run;
  24. data want;
  25.         set tmp;
  26.         by id;
  27.         if first.id+last.id<2 then output;
  28. run;
复制代码

藤椅
YueweiLiu 发表于 2012-7-15 00:34:15
用merge可以如下:
  1. data want;
  2.         merge test1 (in=x rename=(year=year1 state=state1)) test2 (in=y rename=(year=year2 state=state2));
  3.         by id;
  4.         if x and y then do;
  5.                 year=year1;
  6.                 state=state1;
  7.                 output;
  8.                 year=year2;
  9.                 state=state2;
  10.                 output;
  11.         end;
  12.         keep id year state;
  13. run;
复制代码

板凳
YueweiLiu 发表于 2012-7-15 00:42:43
  1. proc sql;
  2.         create table want as
  3.         select * from
  4.         (select * from test1
  5.         union
  6.         select * from test2)
  7.         group by id having count(id)>1;
  8. quit;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
84562 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
pobel 在职认证  发表于 2012-7-15 07:41:54

data need;
set test1 test2;
by id;
if first.id and last.id then delete;
run;

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
84562 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

和谐拯救危机

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 17:55