SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: shiyiming
打印 上一主题 下一主题

求助宏变量中如何去除重复的

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
11#
 楼主| 发表于 2009-10-21 12:32:16 | 只看该作者

Re: 求助宏变量中如何去除重复的

受启发,D版一个
还是喜欢弄到data步中弄..
[code:23ou655x]%let var=a c b c a c d f a d d f;
%macro nodup(var);
data _null_;
  lst=scan("&var",1);
  do i=2 to count("&var"," ")+1;
    if index(lst,scan("&var",i,""))=0 then lst=compbl(lst||" "||scan("&var",i," "));
  end;
  call symput("lst",lst);
run;
%mend nodup;
%put &lst;[/code:23ou655x]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
12#
 楼主| 发表于 2009-10-27 12:29:03 | 只看该作者

Re: 求助宏变量中如何去除重复的

[code:3nys9kfe]%macro avg/parmbuff;
%let num=1;
%let newchar=;
%let char=%scan(&syspbuff,&num);
%do %while(&char ne);
   %if &num=1 %then %let newchar=&char;
   %else %do;
      %if  %index(&newchar,&char) %then %let newchar=&newchar;
      %else %let newchar=%bquote(&newchar &char);
          %end;
   %let num=%eval(&num+1);
   %let char=%scan(&syspbuff,&num);
%end;
%put &newchar;
%mend;
%avg(a b d c a d e f e bd e eoi)
[/code:3nys9kfe]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2009-10-27 19:07:54 | 只看该作者

Re: 求助宏变量中如何去除重复的

与smand008 英雄所见略同 可能还是要用indexw
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-6 04:43 , Processed in 0.121344 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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