楼主: Imasasor
6615 8

两个表相同变量不同值的查询 [推广有奖]

  • 1关注
  • 64粉丝

VIP

已卖:215份资源

学科带头人

33%

还不是VIP/贵宾

-

TA的文库  其他...

超哥喜欢的文章

威望
1
论坛币
47033 个
通用积分
3.1376
学术水平
238 点
热心指数
246 点
信用等级
231 点
经验
37132 点
帖子
849
精华
3
在线时间
2235 小时
注册时间
2012-7-4
最后登录
2024-10-10

初级学术勋章 初级热心勋章 初级信用勋章 中级热心勋章 中级学术勋章

楼主
Imasasor 发表于 2012-10-31 15:47:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
两个数据集,同一个变量id,大部分数据相同,但有少部分不同的值,怎么找出两个数据集中该变量值不匹配的观测?

如data a 中id 取值为1,3,4,6  data b中id取值为1,2,3,4 那么要找出的值就是2,6。

求各位高手不吝用各种data merge或proc sql解决。
二维码

扫码加我 拉你入群

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

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

关键词:proc sql Merge Data 部分数据 数据集 查询

回帖推荐

redbaby_jia 发表于8楼  查看完整内容

data data1; input id@@; cards; 1 3 4 6 ; run; data data2; input id@@; cards; 1 2 3 4 ; run; proc sql; create table data3 as select id as id1 from data1 where id not in (select id from data2); run; proc sql; create table data4 as select id as id2 from data2 where id not in (select id from data1); run; data data5; merge data3 data4; run; proc print data=data5; run;

本帖被以下文库推荐

欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

沙发
soporaeternus 发表于 2012-10-31 16:00:35
merge的话是not (ina and inb)
sql做full join的话类似
sql还可以做(union) except (intersect)

Let them be hard, but never unjust

藤椅
soporaeternus 发表于 2012-10-31 16:01:11
merge的话是not (ina and inb)
sql做full join的话类似
sql还可以做(union) except (intersect)
Let them be hard, but never unjust

板凳
ziyenano 发表于 2012-10-31 16:15:29
data a;
input id;
cards;
1
3
4
6
;
data b;
input id;
cards;
1
2
3
4
;
run;

/*solution1*/
data c;
merge a(in=a) b(in=b);
by id;
aa=a;bb=b;
run;
/*表c中如果aa和bb都等于1,就证明两张表中都有该数据,否则为相异数据*/

/*solution2*/
proc sql;
create table c as
select id from
(select id from a union select id from b) t
where t.id not in
(select id from a intersect select id from b);
quit;
/*(a∪b)-(a∩b)*/


报纸
cuihao1986 发表于 2012-10-31 16:17:52
select distinct

地板
choasxiao 发表于 2012-10-31 19:41:11
data a;
input id;
cards;
1
3
4
6
;
data b;
input id;
cards;
1
2
3
4
;
run;
proc sort data=a;by id ;run;
proc sort data=b;by id ;run;
data c;
merge a(in=a) b(in=b);
if a and b;
by subjid;
run;
data d;
merge a b;
by subjid;
x=1;
run;
data dd;
merge c d;
by id;
if x^=1;
run;

7
choasxiao 发表于 2012-10-31 19:44:54
data dd;
merge c d(in=a);
if a;
by id;
if x=.;
run;

8
redbaby_jia 发表于 2012-11-14 23:38:35
data data1;
input id@@;
cards;
1 3 4 6
;
run;
data data2;
input id@@;
cards;
1 2 3 4
;
run;
proc sql;
create table data3 as
select id as id1 from data1
where id not in (select id from data2);
run;
proc sql;
create table data4 as
select id as id2 from data2
where id not in (select id from data1);
run;
data data5;
merge data3 data4;
run;
proc print data=data5;
run;
已有 2 人评分经验 论坛币 热心指数 信用等级 收起 理由
bakoll + 3 + 3 精彩帖子
Imasasor + 12 + 24 + 1 + 1 鼓励积极发帖讨论

总评分: 经验 + 15  论坛币 + 27  热心指数 + 1  信用等级 + 1   查看全部评分

9
userzht 发表于 2017-8-9 11:07:38
soporaeternus 发表于 2012-10-31 16:00
merge的话是not (ina and inb)
sql做full join的话类似
sql还可以做(union) except (intersect)
太高效,我是说最后一个,赞

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

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