楼主: ywu0212
2012 11

[问答] 急求各位大神一个MACRO 关于数据扫描,提取的问题? 多谢 [推广有奖]

11
hopewell 发表于 2013-10-12 14:04:08 |只看作者 |坛友微信交流群
  1. proc fcmp outlib=work.funcs.benfunc;
  2.     function xscan(string $, position, delimiter $) $200;
  3.         attrib returnString length=$200;
  4.         if missing(strip(delimiter)) then _delimiter='\s';
  5.         else _delimiter=delimiter;
  6.         if position lt 0 then do;
  7.             _position=max(abs(position)-1,0);
  8.             pattern=prxparse(cats("/([^",_delimiter,"]*",_delimiter,"){",_position,"}[^",_delimiter,"]+$/"));
  9.             returnString=substrn(string,prxmatch(pattern,strip(string)));
  10.         end;
  11.         else do;
  12.             _position=position;
  13.             pattern=prxparse(cats("/^([^",_delimiter,"]*(",_delimiter,"|$)){",_position,"}/"));
  14.             call prxsubstr(pattern,strip(string),start,length);
  15.             returnString=substrn(string,start,ifn(length=lengthn(string),length,length-1));
  16.         end;
  17.         return(returnString);
  18.     endsub;
  19. run;

  20. options cmplib=work.funcs;
  21. data test;
  22.     x='a,bb,ccc,dddd,bb,eeeee';
  23.     length y $40;
  24.     do i=-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7;
  25.         y=xscan(x,i,',');
  26.         output;
  27.     end;
  28. run;
复制代码
观钓颇逾垂钓趣 种花何问看花谁

使用道具

12
ywu0212 发表于 2013-10-18 03:13:10 |只看作者 |坛友微信交流群
hopewell 发表于 2013-10-12 14:04
非常感谢,这个是我之前从没见过的PROC

使用道具

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

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

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

GMT+8, 2024-5-17 23:42