SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2688|回复: 7
打印 上一主题 下一主题

去除重复保持顺序不变

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2012-8-23 23:59:15 | 只看该作者

去除重复保持顺序不变

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 变量中。谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-8-24 01:54: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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2012-8-24 08:50:37 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2012-8-26 15:13:05 | 只看该作者

Re: 去除重复保持顺序不变

可以试试双set。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2012-8-28 07:41:26 | 只看该作者

Re: 去除重复保持顺序不变

lag 判断 真删之
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2012-8-28 23:38:08 | 只看该作者

Re: 去除重复保持顺序不变

你的问题实际是去除连续出现的重复数据。
data bb;
set aaa;
by x notsorted;
if first.x;
run;

问题是若原始数据中有隔行重复数据的话,会被认为是不重复而输出。比如 aa bb cc aa;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2012-8-29 09:54:42 | 只看该作者

Re: 去除重复保持顺序不变

[quote="sun59338":qca92rdp]你的问题实际是去除连续出现的重复数据。
data bb;
set aaa;
by x notsorted;
if first.x;
run;

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

你理解错了,他就是要全部去重,然后按照出现顺序排序~
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2012-10-15 21:06:05 | 只看该作者

Re: 去除重复保持顺序不变

不难啊, 在去重操作之前,编个号,然后去重完后,按照这些序号,排序下就OK了。
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-3 21:30 , Processed in 0.101851 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表