全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5920 13
2014-11-02
悬赏 50 个论坛币 已解决
%macro aaa(y=);
%let x=\aaa\bbb\ccc21\aaa\bbb\ccc23\aaa\bbb\ccc35\aaa\bbb\ccc42;

%put &x;

%mend
y指定为1, 将宏变量的第1个\aaa\bbb替换为空,x解析为\ccc21\aaa\bbb\ccc23\aaa\bbb\ccc35\aaa\bbb\ccc42;
y指定为2, 将宏变量的前2个\aaa\bbb替换为空,x解析为\ccc21\ccc23\aaa\bbb\ccc35\aaa\bbb\ccc42;



二维码

扫码加我 拉你入群

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

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

全部回复
2014-11-2 10:03:52
复制代码
二维码

扫码加我 拉你入群

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

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

2014-11-2 10:24:32
学习学习
二维码

扫码加我 拉你入群

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

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

2014-11-2 10:57:02
%macro aaa(y=);
%let x=\aaa\bbb\ccc21\aaa\bbb\ccc23\aaa\bbb\ccc35\aaa\bbb\ccc42;

%do i=1 %to &y;
     %let pos=%index(&x,\aaa\bbb);
     %if &pos=1 %then %let x=%substr(&x,9);
         %else %if &pos %then %let x=%substr(&x,1,&pos-1)%substr(&x,&pos+8);
%end;

%put &x;
%mend;
二维码

扫码加我 拉你入群

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

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

2014-11-2 22:09:01
%macro want(y=);
%let x=%str(\aaa\bbb\ccc21\aaa\bbb\ccc23\aaa\bbb\ccc35\aaa\bbb\ccc42);
data a;
        c=count("&x","\aaa\bbb");
        do i=&y to &y;
                d=compress(tranwrd(substr("&x",1,find("&x","\aaa\bbb",i)-1),"\aaa\bbb",""))||
                        substr("&x",find("&x","\aaa\bbb",i)+8);
        end;
run;
%mend;
%want(y=2);

你可以根据你的需要,对宏程序中的函数进行调整

二维码

扫码加我 拉你入群

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

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

2014-11-2 22:40:33
huangpengfei 发表于 2014-11-2 22:09
%macro want(y=);
%let x=%str(\aaa\bbb\ccc21\aaa\bbb\ccc23\aaa\bbb\ccc35\aaa\bbb\ccc42);
data a;
提供了另外一种思路,但程序是有bug的
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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