请选择 进入手机版 | 继续访问电脑版
楼主: dxystata
4128 3

如何去掉宏变量每个词末尾的数字 [推广有奖]

版主

大师

34%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
181698 个
通用积分
15202.5562
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
289859 点
帖子
5347
精华
1
在线时间
13446 小时
注册时间
2006-6-21
最后登录
2024-3-29

初级学术勋章 初级热心勋章

dxystata 发表于 2012-8-26 10:19:36 |显示全部楼层 |坛友微信交流群
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;
关键词:vars RBC let VaR ARS 结果 如何

本帖被以下文库推荐

ntsean 发表于 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;

使用道具

dxystata 发表于 2012-8-31 16:51:58 |显示全部楼层 |坛友微信交流群
有没更简单的方法?谢谢!

使用道具

jingju11 发表于 2012-9-1 04:35:05 |显示全部楼层 |坛友微信交流群
  1. %macro rmN_/mINoperator;
  2.         %global rs; %let rs =;%*overwrite &rs. if exists outside;
  3.         %if not %length(&vars)%then%do; %put %nrstr(&var) is empty; %return; %end;
  4.         %do i =1 %to %sysfunc(countw(&vars));
  5.                 %let r =%sysfunc(substrn(%scan(&vars,&i),1,%sysfunc(findc(%scan(&vars,&i),a,a,-%length(&vars)))));
  6.                 %if &r ^= %then%if not (&r in 1 &rs) %then %let rs =&rs &r;
  7.         %end;        
  8. %mend rmN_;
复制代码

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

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 06:58