标题: 请教如何删除“不”重复数据? [打印本页] 作者: shiyiming 时间: 2011-12-11 04:28 标题: 请教如何删除“不”重复数据? 比如下表:(实际表格中有近万条观测)
data sss;
input ch $ num;
cards;
A 1
A 2
B 3
C 3
C 2
C 6
D 6
E 7
E 4
;
凡是ch变量有重复出现的A,C,E等都要保留,不管num值为多少。同样ch变量名只出现过一次的B和D所在观测行都要删除,不管num为何值
目前在下只会nodupkey,反过来不知道怎么用…… 查了help文件,dupout参数也必须在nodupkey之后才能用。那样不就本末倒置了么……
最后弱弱的问下,这个问题应该不需要用到Proc SQL命令了吧?作者: shiyiming 时间: 2011-12-11 10:21 标题: Re: 请教如何删除“不”重复数据? proc sql;
create table new as
select *,
count(ch) as cnt
from sss
group by ch
having cnt>1;
quit;作者: shiyiming 时间: 2011-12-11 17:18 标题: Re: 请教如何删除“不”重复数据? 多谢!!
如果楼上的朋友是住在大陆的话,那起的还真早!
这个问题真的只能用proc sql吗?作者: shiyiming 时间: 2011-12-11 22:06 标题: Re: 请教如何删除“不”重复数据? [quote="neo":2svezpxr]多谢!!
如果楼上的朋友是住在大陆的话,那起的还真早!
这个问题真的只能用proc sql吗?[/quote:2svezpxr]
我一般这样用:
proc sort data=sss; by ch; run;
data new; set sss; by ch; if first.ch=last.ch then delete; run;作者: shiyiming 时间: 2011-12-12 04:14 标题: Re: 请教如何删除“不”重复数据? 也感谢dengzi!
我昨天试过类似命令,当时想如果满足“既是第一条记录又是最后一条记录”那就删除,我就直接写下了if first.XXX=if last.XXX,结果发现结果不正确,就僵住了……
原来是if first.XXX=last.XXX,不需要在last前加if,再次感谢!作者: shiyiming 时间: 2011-12-12 05:28 标题: Re: 请教如何删除“不”重复数据? 刚刚用自己新建的表格运行了下,貌似用if first.xxx=last.xxx结果还是不对……
晚点我将自己的表格打出来作者: shiyiming 时间: 2011-12-12 16:41 标题: Re: 请教如何删除“不”重复数据? 请教dengzi
比如我有这一组数据stack
ID Val
1 A7
1 A
1 B
2 B7
2 C
3 C7
3 C
3 S
3 B
4 C7
5 S7
5 S
6 A
6 B
7 S
使用命令后,记录为单个的确被删除了,但是ID为1的中间那条VAl为A的观测消失了……只剩下两条ID为1的观测了……
ID为3的观测中则被删掉了VAL值为C和S的两条观测,请问这是肿么了
proc sort data=ex.stack;
by id;
run;
data ex.dup;
set ex.stack;
by id;
if first.id=last.id then delete;
run;作者: shiyiming 时间: 2011-12-12 23:07 标题: Re: 请教如何删除“不”重复数据? if first.id & last.id then delete;
[quote="neo":ogn1khuo]请教dengzi
比如我有这一组数据stack
ID Val
1 A7
1 A
1 B
2 B7
2 C
3 C7
3 C
3 S
3 B
4 C7
5 S7
5 S
6 A
6 B
7 S
使用命令后,记录为单个的确被删除了,但是ID为1的中间那条VAl为A的观测消失了……只剩下两条ID为1的观测了……
ID为3的观测中则被删掉了VAL值为C和S的两条观测,请问这是肿么了
proc sort data=ex.stack;
by id;
run;
data ex.dup;
set ex.stack;
by id;
if first.id=last.id then delete;
run;[/quote:ogn1khuo]作者: shiyiming 时间: 2011-12-13 00:51 标题: Re: 请教如何删除“不”重复数据? 这下终于对了!!
多谢Oloolo <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->作者: shiyiming 时间: 2011-12-13 10:12 标题: Re: 请教如何删除“不”重复数据? 试试我这个。
data sss;
input ch $ num;
cards;
A 1
A 2
B 3
C 3
C 2
C 6
D 6
E 7
E 4
;
proc sort data=sss;
by ch;
run;
data new;
set sss;
by ch;
if first.ch then cnt=0;
cnt+1;
if last.ch then output;
run;
data new1;
set new;
if cnt>1;
run;
proc sort data=sss;
by ch;
proc sort data=new1;
by ch;
data new2;
merge new1 sss;
by ch;
if cnt=. then delete;
drop cnt;
proc print data=new2;
run;
最后是排好序的结果。目前我还没办法还原。呵呵。还望指正!