楼主: 甲氟喹3
1279 9

[有偿编程] 有条件的提取变量内的内容 [推广有奖]

  • 1关注
  • 0粉丝

大专生

1%

还不是VIP/贵宾

-

威望
0
论坛币
138 个
通用积分
9.7500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
416 点
帖子
15
精华
0
在线时间
62 小时
注册时间
2015-12-22
最后登录
2022-8-28

100论坛币
急求
我想要提取这一列每个变量第一组数字前的全部文本信息;这些文本信息生成新的一列变量;举的例子,第一个变量想提取的文本是“Commerzbank",第二个变量想提取的是”United Bank Switzerland AG".这一列有差不多4万个数据,提取出来的数据有很多是重复的,不用管,这要可以和这列一一对应就可以了。求大神指点,万分感谢!!

Capture5.PNG
关键词:Switzerland United UNITE Bank 万分感谢

回帖推荐

cashes93 发表于8楼  查看完整内容

这个问题可以使用正则表达式,如上代码,可以实现找出第一个数字串
沙发
l1i2n3i4n5g 在职认证  发表于 2018-3-5 16:12:34 |只看作者 |坛友微信交流群
甲氟喹3 发表于 2018-3-5 17:41
你好 我写了这样的一个code,
data want2;
set want1;
  1. data test;
  2.    input expanded_name :&$100.;
  3. cards;
  4. asdf123
  5. asdfasdf456
  6. asdfput
  7. asdfasdf put
  8. ;
  9. run;

  10. data want;
  11.    set test;
  12.    digit=anydigit(expanded_name);
  13.    if digit>0 then string=substrn(expanded_name,1,digit-1);
  14.    else string=expanded_name;
  15. run;

  16. data want1;
  17.    set want;
  18.    string1=substr(string,1,find(string,"put")-1);
  19. run;
复制代码

使用道具

藤椅
l1i2n3i4n5g 在职认证  发表于 2018-3-5 16:28:00 |只看作者 |坛友微信交流群
  1. data test;
  2.    input expanded_name :$100.;
  3. cards;
  4. asdf123
  5. asdfasdf456
  6. ;
  7. run;

  8. data want;
  9.    set test;
  10.    digit=anydigit(expanded_name);
  11.    string=substrn(expanded_name,1,digit-1);
  12. run;

  13. proc print;
  14. run;
复制代码


使用道具

板凳
甲氟喹3 发表于 2018-3-5 16:48:06 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2018-3-5 16:28
谢谢你! 我去试一下先

使用道具

报纸
甲氟喹3 发表于 2018-3-5 17:16:49 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2018-3-5 16:28
你好呀 现在有这样一个问题,就是有大概100个数据,这个变量里没有数字,你可不可以教我一下怎么写呢,比如有些规律是在“put“这个单词之前,有的也没有是什么规律。。

”Goldman Sachs Put Dow Jones Industrial Index Warrants Early“
”Goldman Sachs Put-Deutsche Aktienindex Index Warrants Early“
”Goldman Sachs Put Dow Jones Industrial Index Warrants Early“
”Goldman Sachs Deutsche Aktienindex Index Warrants Early“
比如这四个我想提取的信息都是”Goldman Sachs“,请问有什么办法呀?

使用道具

地板
l1i2n3i4n5g 在职认证  发表于 2018-3-5 17:23:16 |只看作者 |坛友微信交流群
甲氟喹3 发表于 2018-3-5 17:16
你好呀 现在有这样一个问题,就是有大概100个数据,这个变量里没有数字,你可不可以教我一下怎么写呢,比 ...
先判断put的位置,然后substr之前部分就好了

使用道具

7
甲氟喹3 发表于 2018-3-5 17:41:40 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2018-3-5 17:23
先判断put的位置,然后substr之前部分就好了
你好 我写了这样的一个code,
data want2;
set want1;
A=compress(Expanded_Name);
B=substr(A,find(A,"put"));run;

但是跑不出来,想请问有没有往前取的substr呢;就是往前取所有文本信息,因为我也不知道位数,谢谢!

使用道具

8
cashes93 发表于 2018-3-5 20:42:29 |只看作者 |坛友微信交流群
  1. data have;
  2. input len $char1000. @@;
  3. cards;

  4. sd1232sdsdsd0912
  5. dsds1232sd09sss
  6. 12324/1232\sdssds
  7. ;
  8. run;

  9. data want;
  10.         set have;
  11.         position1 = prxmatch('/([0-9])+/',len);       
  12.         position2 = prxmatch('/([^0-9])+/',substr(len,position1));       
  13.         want=substr(len,position1,position2-1);
  14. run;
复制代码


这个问题可以使用正则表达式,如上代码,可以实现找出第一个数字串

使用道具

9
甲氟喹3 发表于 2018-3-13 10:52:30 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2018-3-6 09:30
好的好的 谢谢你!

使用道具

10
甲氟喹3 发表于 2018-3-13 11:06:37 |只看作者 |坛友微信交流群
cashes93 发表于 2018-3-5 20:42
这个问题可以使用正则表达式,如上代码,可以实现找出第一个数字串
好的 谢谢 我试一下

使用道具

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

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

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

GMT+8, 2024-4-20 02:00