楼主: hxmlcy
1104 9

[问答] 还是一个合并的问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

7%

还不是VIP/贵宾

-

威望
0
论坛币
485 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
32620 点
帖子
29
精华
0
在线时间
219 小时
注册时间
2012-10-20
最后登录
2017-10-10

楼主
hxmlcy 发表于 2013-3-11 12:12:01 |AI写论文
50论坛币
data1:
a             b             c
0001      1.4           啊
0002      1.4           吧
0002      1.5           才
0002      1.6           的
0003      1.5           额
data2:
a             b              d
0001      1.4           飞
0002      1.4           个
0003      1.5           好
0003      1.5           额
0003      1.6           了
想要得到合并后为:
a             b             c             d
0001      1.4           啊            飞
0002      1.4           吧            个
0003      1.5           额            好
即data1与data2中变量a与变量b完全一致才保留该条数据并且合并。

谢谢了。




最佳答案

关键词:Data 还是

沙发
老师她摸我 发表于 2013-3-11 12:12:02
hxmlcy 发表于 2013-3-11 13:47
只能用sql吗?merge能用吗?
merge
  1. data data3 ;
  2.         merge data1(in=in1) data2(in=in2);
  3.         by a b;
  4.         if in1 and in2;
  5. run;
复制代码


欢迎加入SAS群:144839730-蜗牛

藤椅
playmore 发表于 2013-3-11 12:45:27
  1. proc sql noprint;
  2. create table want as
  3. select A.*,B.d
  4. from data1 as A inner join data2 as B
  5. on A.a=B.a and A.b=B.b;
  6. quit;
复制代码
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

板凳
webgu 发表于 2013-3-11 12:55:25
data a;
input a $    b      c $;
datalines;
0001      1.4           啊
0002      1.4           吧
0002      1.5           才
0002      1.6           的
0003      1.5           额
;
data b;
input a$      b      d $;
datalines;
0001      1.4           飞
0002      1.4           个
0003      1.5           好
0003      1.5           额
0003      1.6           了
;

proc sql;
        create table c as
        select a.a, a.b, c,d
        from a inner join  b
        on  a.a=b.a and a.b=b.b;
quit;

PS : 基于变量a,b 相同的话,0003   1.5 应该有两条纪录。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

报纸
lllyyy! 发表于 2013-3-11 12:58:23
data a;
        input a b c $;
        format a z4.;
cards;
0001      1.4           啊
0002      1.4           吧
0002      1.5           才
0002      1.6           的
0003      1.5           额
;
data b;
        input a b d $;
        format a z4.;
cards;
0001      1.4           飞
0002      1.4           个
0003      1.5           好
0003      1.5           额
0003      1.6           了
;
run;
proc sql;
        create table c as
        select *
                from a inner join b
                        on a.a=b.a and a.b=b.b and a.c^=b.d
                        ;
quit;

地板
hxmlcy 发表于 2013-3-11 13:47:24
只能用sql吗?merge能用吗?

7
lllyyy! 发表于 2013-3-11 14:15:08
hxmlcy 发表于 2013-3-11 13:47
只能用sql吗?merge能用吗?
data test;
        set a;
        by a;
        if first.a ;
run;
data want;
        merge test(in=w) b;
        by a b;
        if w;
        if c=d then delete;
run;

8
hxmlcy 发表于 2013-3-11 15:26:16
lllyyy! 发表于 2013-3-11 14:15
data test;
        set a;
        by a;
c和d可以一样啊,是不是我表达的意思不清楚?

9
hxmlcy 发表于 2013-3-11 15:26:49
老师她摸我 发表于 2013-3-11 14:19
merge
c和d可以一样啊,是不是我表达的不清楚?

10
lllyyy! 发表于 2013-3-11 17:42:10
hxmlcy 发表于 2013-3-11 15:26
c和d可以一样啊,是不是我表达的意思不清楚?
data test;
        set a;
        by a;
        if first.a ;
run;
data want;
        merge test(in=w) b;
        by a b;
        if w;
run;

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

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