SAS中文论坛
标题:
如何去除macro变量中重复的字符?
[打印本页]
作者:
shiyiming
时间:
2010-4-9 12:27
标题:
如何去除macro变量中重复的字符?
比如:
%let aaa=a1 a1 a a111 a1 b;
如何去掉重复的,aaa解析为a1 a a111 b,谢谢!
作者:
shiyiming
时间:
2010-4-9 13:00
标题:
Re: 如何去除macro变量中重复的字符?
首先你要指定分隔符,然后根据分隔符从字符串中依次读取子串,如果前边有了该子串,则不把此次读取的子串追加到一个宏变量中,否则追加到一个宏变量中。
作者:
Qiong
时间:
2010-4-9 14:21
标题:
Re: 如何去除macro变量中重复的字符?
读成dataset,nodup,再放回宏变量
作者:
shiyiming
时间:
2010-4-9 16:47
标题:
Re: 如何去除macro变量中重复的字符?
<!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者:
shiyiming
时间:
2010-4-10 00:01
标题:
Re: 如何去除macro变量中重复的字符?
if you use SAS 9.2 then the code may be working:
[code:2o2zt2wg]%macro deStringMcr/mindelimiter = '';options minoperator;
%local i string; %global new_aaa;
%let i = 2; %let new_aaa = %scan(&aaa, 1);
%do%while(%scan(&aaa, &i) ne );
%let string = %scan(&aaa, &i);
%if not (&string in &new_aaa) %then %let new_aaa = &new_aaa &string;
%let i = %eval(&i+1);
%end;
%mend deStringMcr;
%let aaa = a1 a1 a a111 a1 b;
%deStringMcr
; %put &new_aaa;[/code:2o2zt2wg]
作者:
shiyiming
时间:
2010-4-10 10:11
标题:
Re: 如何去除macro变量中重复的字符?
1、更新了一下
2、鸣谢国际大咖jingju11
[code:3nnxqk5y]%macro test(in_str);
%let dlm=%str( );
%let in_str=%upcase(&in_str);
%let out_str=%scan(&in_str,1,&dlm);
%let i=2;
%let sub_str=%scan(&in_str,&i,&dlm);
%do %while(&sub_str ne);
%if %sysfunc(indexw(&out_str,&sub_str,&dlm))=0 %then %let out_str=&out_str &sub_str;
%let i=%eval(&i+1);
%let sub_str=%scan(&in_str,&i,&dlm);
%end;
&out_str
%mend;
%let aaa=%test(a1 a1 a a111 A1 b 1);
%put NOTE:aaa=&aaa;[/code:3nnxqk5y]
作者:
shiyiming
时间:
2010-4-21 08:12
标题:
Re: 如何去除macro变量中重复的字符?
有更好的方法吗?
欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/)
Powered by Discuz! X3.2