楼主: peterpan_aus
4541 9

[原创博文] 如何使用_infile_处理一个string [推广有奖]

  • 5关注
  • 0粉丝

讲师

60%

还不是VIP/贵宾

-

威望
0
论坛币
542 个
通用积分
6.4602
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
6198 点
帖子
214
精华
0
在线时间
855 小时
注册时间
2007-12-18
最后登录
2023-7-4

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
50 Scandinavian Clothing A/S NO
109 Petterson AB SE
316 Prime Sports Ltd GB
755 Top Sports DK
772 AllSeasons Outdoor Clothing US
2963 3Top Sports US
2995 Van Dammeren International NL
3298 A Team Sports US
4718 KN Outdoor Trading Inc US
4742 Luna sastreria S.A. ES
4793 Norsok A/S DK
5503 Ultra Sporting Goods Inc US
14648 Top Sports Inc US

上面的data怎么输出 ID suppliername country的格式使用_infile_
小弟是SAS新手请指教
二维码

扫码加我 拉你入群

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

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

关键词:string infile tring file RING country Sports 如何

本帖被以下文库推荐

沙发
peterpan_aus 发表于 2011-10-11 07:00:48 |只看作者 |坛友微信交流群
问题已经解决,附上程序,希望有更简单方法的跟帖,大家一起讨论一起进步!谢谢!
data supplier;
infile 'C:\SAS study\supply.dat';
length Supplier_ID $5 Supplier_Name $30 Country $2;
retain j;
input;
do i=1 to 6;
if (subStr(_INFILE_,i,1)=' ')
then
        do;
        Supplier_ID=subStr(_INFILE_,1,i);
        j=i;
        end;
end;
len = length(_INFILE_);
Supplier_Name=substr(_INFILE_,j+1,len-(j+1)-2);
Country=substr(_INFILE_,len-1,2);
drop i j len;
run;        

使用道具

藤椅
YueweiLiu 发表于 2011-10-11 08:24:31 |只看作者 |坛友微信交流群
规律不是很明显,不过在处理文本的时候,可以试试 PRX:
  1. data supplier;
  2.         infile cards;
  3.         length supplier_id $5 supplier_name $30 country $2;
  4.         input @;
  5.         supplier_id=prxchange("s/(^\d+ )(.+ )([A-Z]{2}$)/$1/",-1,strip(_infile_));
  6.         supplier_name=prxchange("s/(^\d+ )(.+ )([A-Z]{2}$)/$2/",-1,strip(_infile_));
  7.         country=prxchange("s/(^\d+ )(.+ )([A-Z]{2}$)/$3/",-1,strip(_infile_));
  8. cards;
  9. 50 Scandinavian Clothing A/S NO
  10. 109 Petterson AB SE
  11. 316 Prime Sports Ltd GB
  12. 755 Top Sports DK
  13. 772 AllSeasons Outdoor Clothing US
  14. 2963 3Top Sports US
  15. 2995 Van Dammeren International NL
  16. 3298 A Team Sports US
  17. 4718 KN Outdoor Trading Inc US
  18. 4742 Luna sastreria S.A. ES
  19. 4793 Norsok A/S DK
  20. 5503 Ultra Sporting Goods Inc US
  21. 14648 Top Sports Inc US
  22. run;      
复制代码

使用道具

板凳
zhentao 发表于 2011-10-11 10:03:55 |只看作者 |坛友微信交流群
学习了,呵呵。

使用道具

报纸
spssone 发表于 2011-11-3 22:16:37 |只看作者 |坛友微信交流群
看不懂,MARK

使用道具

地板
soporaeternus 发表于 2011-11-4 09:12:12 |只看作者 |坛友微信交流群
YueweiLiu 发表于 2011-10-11 08:24
规律不是很明显,不过在处理文本的时候,可以试试 PRX:
id是第一个字串,国家缩写是最后一个字串......中间是一块
Let them be hard, but never unjust

使用道具

7
ryuuzt 发表于 2011-11-4 09:29:35 |只看作者 |坛友微信交流群
soporaeternus 发表于 2011-11-4 09:12
id是第一个字串,国家缩写是最后一个字串......中间是一块
也就是说用scan就足够了?

使用道具

8
soporaeternus 发表于 2011-11-4 09:50:49 |只看作者 |坛友微信交流群
  1.         ID=scan(_infile_,1);
  2.         country=scan(_infile_,-1);
  3.         suppliername=substr(_infile_,length(ID)+1,length(_infile_)-length(ID)-length(country)-1);
复制代码
或许最后那个需要麻烦点......
Let them be hard, but never unjust

使用道具

9
ryuuzt 发表于 2011-11-5 08:59:40 |只看作者 |坛友微信交流群
soporaeternus 发表于 2011-11-4 09:50
或许最后那个需要麻烦点......
呵呵,我也是觉得中间那个比较麻烦。
不过比prx简单一些。
谢谢。

使用道具

10
butterfly1107 发表于 2014-10-24 13:59:10 |只看作者 |坛友微信交流群
学习了,虽然还不是很懂

使用道具

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

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

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

GMT+8, 2024-4-19 15:35