SAS中文论坛
标题:
catx() function question in macro
[打印本页]
作者:
shiyiming
时间:
2012-5-4 04:19
标题:
catx() function question in macro
我想得到mkt的任意组合值(根据ss给出的组合数字),比如ss=(1 4),那么我想得到mkts=(m1 m4); 比如ss=4,那么我想得到mkts=m4;
比如ss=(1 3 4),那么我想得到mkts=(m1 m3 m4); 如果marks有超过1个以上值时,请用空格隔开.
下面的code却总出现error,好像是catx()在macro里的用法有误,请高手指教,或者给出你的code。
data a;
input unid $ sales mkt $;
cards;
001 34500 m1
001 4500 m2
001 60900 m3
001 1000 m4
002 26600 m1
002 1400 m2
002 59000 m3
002 1300 m4
003 2000 m2
003 17900 m3
004 23000 m1
;
run;
%macro a(ss=);
%let s1=%str(m1 m2 m3 m4);
%let mkts='';
%let n=%sysfunc(countw(&ss.));
%do i=1 %to &n.;
%do j=1 %to 4;
%if %scan(%str(&ss.),&i.)=&j. %then %do;
%let mkts=%sysfunc(catx('',&mkts.,%scan(&s1.,&j.)));
%end;
%end;
%end;
%put mkts=&mkts.;
%mend;
%a(ss=1 3)
谢谢!!!
作者:
shiyiming
时间:
2012-5-5 10:20
标题:
Re: catx() function question in macro
等更完备的方法
[code:t50llkrd]data _null_;
str='(111 222 333 444)';
out=cats('(',prxchange('s/(\(|\s+)/ m/',-1,str));
put out;
run;[/code:t50llkrd]
欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/)
Powered by Discuz! X3.2