全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1978 4
2016-09-28
原始数据是
id

disposition

001

complete

002

ae

002

complete

003

complete

004

death

005

complete

006

death

006

complete

007

complete

008

sae

009

complete

010

cancel

010

complete

011

complete

012

complete

013

ae

014

complete

015

complete

大多数是不重复的,不重复的都保留,像002、006、010这些重复的,去掉complete这行!
二维码

扫码加我 拉你入群

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

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

全部回复
2016-9-28 11:46:23
proc sql;
create table chkdup as
select *, count(*) as n from test
group by id;
quit;

data wanted;
set chkdup;
if n>1 and disposition='complete' then delete;
drop n;
run;
二维码

扫码加我 拉你入群

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

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

2016-9-29 16:35:38
[code]data dis;
input id disposition $10.;
cards;
001  complete


002  ae


002  complete


003  complete


004  death


005  complete


006  death


006  complete


007  complete


008  sae


009 complete


010 cancel


010 complete


011 complete


012  complete


013  ae


014  complete


015  complete
;
run;

data temp;
        set dis;
        by id;
        if not (first.id &  last.id ) & disposition="complete" then delete   ;
run;[/code]
二维码

扫码加我 拉你入群

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

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

2016-9-29 17:15:53
wang1839 发表于 2016-9-29 16:35
这个我就理解不了了!因为重复的就两行,不是第一行也不是最后一行,那不就等于什么都没有可以delete了吗?
二维码

扫码加我 拉你入群

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

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

2016-9-29 17:31:54
fyp198744 发表于 2016-9-29 17:15
这个我就理解不了了!因为重复的就两行,不是第一行也不是最后一行,那不就等于什么都没有可以delete了吗 ...
你可以分析下first.id & last.id的返回值:
如果是有重复的值,那么first.id=1时,last.id必不为1,那么1&0 =0;如果first.id=0,那么first.id & last.id也一定是0;
如果没有重复,那么就有first.id=last.id=1,此时才会出现first.id & last.id =1。
所以出 (first.id & last.id) 就是判断是否重复的ID的语句。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群