首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SAS中提取数字后面的字符串

在SAS中提取数字后面的字符串
EN

Stack Overflow用户
提问于 2020-09-23 10:46:24
回答 2查看 186关注 0票数 0

我需要提取数字后面的字符串。尽管问题是字符串前面的位数不一致。我需要的是类似于Excel中的Flash填充的东西。但我将对100K+行执行此操作,因此Excel可能无法处理数据。例如:

12345678aaa@mail.com

12345bbb@mail.com

123456789ccc@mail.com

我希望使用提取的字符串创建另一个变量,如下所示:

aaa@mail.com

bbb@mail.com

ccc@mail.com

这个是可能的吗?

提前谢谢你!

EN

回答 2

Stack Overflow用户

发布于 2020-09-23 10:59:57

您可以使用正则表达式替换(PRXCHANGE)或谨慎使用VERIFY函数。

示例:

代码语言:javascript
运行
复制
data have;
input email $char25.; datalines;
12345678aaa@mail.com
12345bbb@mail.com
123456789ccc@mail.com
1234567890123456789012345
;

data want;
  set have;

  mail1 = prxchange('s/^\d+//',-1,email);

  if email in: ('0','1','2','3','4','5','6','7','8','9') then 
    mail2 = substr(email||' ',verify (email||' ', '0123456789'));
run;
票数 0
EN

Stack Overflow用户

发布于 2020-09-24 21:50:31

上面的例子应该是OK的,

但是假设一些电子邮件地址可以有数字,例如123abc001@mail.com,我的下面的代码应该会有所帮助:

代码语言:javascript
运行
复制
data have;
input email $char25.; datalines;
12345678abc01@mail.com
12345bcde@mail.com
123456789cdefg1@mail.com;


PROC SQL;
   CREATE TABLE WORK.QUERY_FOR_HAVE_0003 AS 
   SELECT t1.email, 
          /* want */
            (substrn(t1.email,INDEXC( t1.email, SUBSTRN(COMPRESS(t1.email, 'abcdefghijklmnopqrstuvwxyz', 'k'), 1, 1)))) 
            AS want
      FROM WORK.HAVE t1;
QUIT;

首先,我们使用COMPRESS函数m只留下char值;

然后SUBSTRN -使第一个字符出现在电子邮件地址中;

After than INDEXC -返回字符的位置;

最后SUBSTRN再次-离开电子邮件的其余部分,从前面的步骤提供的位置开始。

最终外观: 1:https://i.stack.imgur.com/hFftg.png

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64020300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档