SAS中文论坛

标题: 去除重复保持顺序不变 [打印本页]

作者: shiyiming    时间: 2012-8-23 23:59
标题: 去除重复保持顺序不变
data aaa;
input x$;
cards;
WBC
WBC
RBC
RBC
Hb
Hb
HCT
HCT
PLT
PLT
WBC
WBC
RBC
RBC
;
run;
如何得到重复的,并保持顺序不变(wbc rbc hb hct plt),并放入macro 变量中。谢谢!
作者: shiyiming    时间: 2012-8-24 01:54
标题: Re: 去除重复保持顺序不变
[code:1tndvk8o]
data aaa;
input x$;
cards;
WBC
WBC
RBC
RBC
Hb
Hb
HCT
HCT
PLT
PLT
WBC
WBC
RBC
RBC
;
data ads;
set aaa;
indx=_n_;
run;
proc sort data=ads out=bds nodupkey;
by x;
run;
proc sort data=bds out=cds;
by indx;
run;
data dds;
set cds;
call symput('mv'||strip(_n_),x);
run;
%put &mv1 &mv2 &mv3 &mv4 &mv5;
[/code:1tndvk8o]
作者: shiyiming    时间: 2012-8-24 08:50
标题: Re: 去除重复保持顺序不变
[code:2t2tmxmq]data _null_;
    length testcd $8;
    if _n_=1 then do;
        declare hash h(hashexp:4);
        rc = h.defineKey('testcd');
        rc = h.defineData('testcd','seq');
        rc = h.defineDone();
        call missing(testcd,seq);
    end;
    set aaa;
    if h.check(key:x) then do;
        seq+1;
        rc=h.add(key:x,data:x,data:seq);
        call symput(cats('testcd',seq),x);
    end;
run;
%put _user_;[/code:2t2tmxmq]
作者: shiyiming    时间: 2012-8-26 15:13
标题: Re: 去除重复保持顺序不变
可以试试双set。
作者: shiyiming    时间: 2012-8-28 07:41
标题: Re: 去除重复保持顺序不变
lag 判断 真删之
作者: shiyiming    时间: 2012-8-28 23:38
标题: Re: 去除重复保持顺序不变
你的问题实际是去除连续出现的重复数据。
data bb;
set aaa;
by x notsorted;
if first.x;
run;

问题是若原始数据中有隔行重复数据的话,会被认为是不重复而输出。比如 aa bb cc aa;
作者: shiyiming    时间: 2012-8-29 09:54
标题: Re: 去除重复保持顺序不变
[quote="sun59338":qca92rdp]你的问题实际是去除连续出现的重复数据。
data bb;
set aaa;
by x notsorted;
if first.x;
run;

问题是若原始数据中有隔行重复数据的话,会被认为是不重复而输出。比如 aa bb cc aa;[/quote:qca92rdp]

你理解错了,他就是要全部去重,然后按照出现顺序排序~
作者: shiyiming    时间: 2012-10-15 21:06
标题: Re: 去除重复保持顺序不变
不难啊, 在去重操作之前,编个号,然后去重完后,按照这些序号,排序下就OK了。




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2