楼主: baojiwolong
2586 3

稍复杂的查找重复观测 [推广有奖]

  • 0关注
  • 8粉丝

博士生

58%

还不是VIP/贵宾

-

威望
0
论坛币
471 个
通用积分
7.7500
学术水平
15 点
热心指数
32 点
信用等级
12 点
经验
7654 点
帖子
167
精华
0
在线时间
454 小时
注册时间
2007-2-1
最后登录
2024-9-23

楼主
baojiwolong 发表于 2011-4-22 11:26:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
重复标准:name,subject,age±2。
如果是严格的name,subjetc,age的话proc sort or proc sql 可以很容易地解决!
当age±2,该如何写呢,希望能像proc sort那样,能同时输出dupout 和out。
name        subject      score
david          chinese      89
david         english      90
david           english      90   
david          maths         78
david         maths         80     
david          maths           78      
jack           chinese        99  
jack             chinese       98   
jack            english        70
二维码

扫码加我 拉你入群

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

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

关键词:重复观测 proc sql English Chinese Subject 观测 重复

沙发
soporaeternus 发表于 2011-4-22 11:36:46
用hash吧,最终hash表是out
原表标记未入hash表的是dupout
Let them be hard, but never unjust

藤椅
sas_user 发表于 2011-4-22 13:16:07
1# baojiwolong
data check;
input name $ subject $ score;
datalines;
david chinese 89
david english 90
david english 90
david maths 78
david maths 80
david maths 78
jack chinese 99
jack chinese 98
jack english 70
;
run;
proc transpose data=check out=b;
by name subject;
run;

data unique(drop=col2 col3 _name_) dup(drop=_name_);
set b;
if col2=. and col3=. then output unique;
else; if (col2 ne . or col3 ne .) and (abs(col2-col1) or abs(col3-col2)) lt 3 then output dup;
run;

板凳
baojiwolong 发表于 2011-4-22 15:43:29
sas_user 发表于 2011-4-22 13:16
1# baojiwolong
data check;
input name $ subject $ score;
datalines;
david chinese 89
david english 90
david english 90
david maths 78
david maths 80
david maths 78
jack chinese 99
jack chinese 98
jack english 70
;
run;
proc transpose data=check out=b;
by name subject;
run;

data unique(drop=col2 col3 _name_) dup(drop=_name_);
set b;
if col2=. and col3=. then output unique;
else; if (col2 ne . or col3 ne .) and (abs(col2-col1) or abs(col3-col2)) lt 3 then output dup;
run;
谢谢关注,使用以下数据测试时,按标准应该没有重复记录,但dup却有!
david chinese 89
david english 90
david english 100
david maths 90
david maths 80
david maths 65
jack chinese 99
jack chinese 96
jack english 70

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

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