标题: 去除重复保持顺序不变 [打印本页] 作者: 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]