全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4384 3
2012-08-26
悬赏 10 个论坛币 已解决
%let vars=rbc1 rb1c2 wbc1 rbc2 wbc2 rbc2_2;
如何去掉宏变量每个词末尾的数字和_,并保留不重复的,顺序也不变,谢谢!
希望得到的宏变量的结果为rbc rb1c wbc。

最佳答案

ntsean 查看完整内容

试试看,只是结果的变量名的顺序有些不同 %let vars=rbc1 rb1c2 wbc1 rbc2 wbc2 rbc2_2; data a; str="&vars"; k=1; do while(scan(str,k) ne ""); str1=scan(str,k); newstr=substr(str1,1,length(translate(str1,' ','0123456789_'))); output; k=k+1; end; run; proc sql noprint; select distinct newstr into :vars1 separated by ' ' from a; quit; %put &vars1;
二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-26 10:19:37
试试看,只是结果的变量名的顺序有些不同

%let vars=rbc1 rb1c2 wbc1 rbc2 wbc2 rbc2_2;

data a;
str="&vars";
k=1;
do while(scan(str,k) ne "");
  str1=scan(str,k);
  newstr=substr(str1,1,length(translate(str1,' ','0123456789_')));
  output;
  k=k+1;
end;
run;

proc sql noprint;
  select distinct newstr into :vars1 separated by ' '
  from a;
quit;

%put &vars1;
二维码

扫码加我 拉你入群

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

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

2012-8-31 16:51:58
有没更简单的方法?谢谢!
二维码

扫码加我 拉你入群

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

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

2012-9-1 04:35:05
复制代码

楼上的方法利用转换出来的缩短的长度来截断字符串,非常好。我的方法基本上把它翻译成宏。仅供参考。
jingju
more stories seen:
http://blog.sina.com.cn/s/blog_a3a9263601016623.html
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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