全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4484 19
2013-12-26
%let aaa=3 4 5;
%let bbb=4;
有什么简单的办法得到bbb在aaa中的位置赋值给ccc?
如果bbb为3 其位置为1
           为4 其位置为2
           为5 其位置为3

谢谢!



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-12-26 16:52:19
%scan?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-26 22:41:52
%macro test;
%let aaa=3 4 5;
%let bbb=4;
%let indicator=%sysfunc(indexw(&aaa.,&bbb.));
%if %eval( &indicator gt 0) %then %do;
        %let i=%sysfunc(countw(&aaa,%str( )));
        %put &i.;
        %do j=1 %to &i.;
                %if %qscan(&aaa., &j.,%str( ))=&bbb. %then %do; %let ccc=&j.; %put ccc=&ccc.; %end;
        %end;
%end;
%mend test;

%test
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-26 22:43:32
Eternal0601 发表于 2013-12-26 22:41
%macro test;
%let aaa=3 4 5;
%let bbb=4;
这里面有比较tricky的地方,如果aaa为3 4 4,bbb为4的话,返回的值是3,而不是2,你自己可以根据需要再改下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-27 13:12:52
用FIND函数就好了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-12-27 17:21:59
playmore 发表于 2013-12-27 13:12
用FIND函数就好了
%let aaa=3 4 5;
%let bbb=4;
%put %sysfunc(find(&aaa,&bbb));
结果显示为3,应该为2。


%let aaa=3 44 5;
%let bbb=4;
%put %sysfunc(find(&aaa,&bbb));
结果显示为3,应该为0。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群