楼主: 神月德
1119 3

sas字符处理问题 [推广有奖]

  • 1关注
  • 0粉丝

本科生

67%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
837 点
帖子
52
精华
0
在线时间
99 小时
注册时间
2015-9-17
最后登录
2018-9-6

楼主
神月德 发表于 2017-1-10 11:03:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
从aa字段中选出“#”后面的数字,不是在“#”后面的数字直接忽略,如下图所示!麻烦各位sas大神指教一下!
11E.tmp.jpg
二维码

扫码加我 拉你入群

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

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


回帖推荐

lovexialulu 发表于4楼  查看完整内容

output

mingfeng07 发表于3楼  查看完整内容

沙发
G狼顾之鬼 发表于 2017-1-10 15:09:09
data z;
        input aa $ 1-30;
        cards;
        w1m2w#1mh#2zkb#9q10l
        fy1x2z3b#2xls#6j
        h4d4t6l#8dx
        ee#1j#2jj#3kk#4KKk
        ;
run;

data z1;
        set z;
        nn=length(compress(aa,'#','k'))+1;
run;

proc sql noprint; select max(nn) into :num from z1; quit;
%put #

data z2;
        set z1;
        array res(&num.) $;
        do i = 1 to nn;
                res(i)=substr(scan(aa,i,'#'),1,1);
        end;
        drop res1;
run;

data z3;
        set z2;
        length bb $100;
        bb=catx(',',of res2-res5);
run;

藤椅
mingfeng07 学生认证  发表于 2017-1-10 17:44:14
  1. data _null_;
  2.         var = "你好1世界#2人们3升级#4生活#6很好5";
  3.         var1 = prxchange('s/[\xa1-\xff]+[0-9]*//',-1,var);
  4.         var2 = prxchange('s/#/,/',-1,substr(var1,2));
  5.         put var1 = var2 =;
  6. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lovexialulu + 1 + 1 + 1 观点有启发

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

板凳
lovexialulu 发表于 2017-1-11 18:35:25
  1. data a;
  2. input var $50.;

  3. datalines;
  4. ssew13dwew#12joijo#3jojow6
  5. ssew13
  6. #ssew#13
  7. ssew13dwew12joijo#3jojow6
  8. ssew#13dwew2joijo3jojow#6
  9. ssew#13dwew##2joijo3jojow#6
  10. ;
  11. run;


  12. data b;
  13. set a;
  14. length var1-var5 $50. ;
  15. /*step 1:change all not number'0-9' or '#' to character 'k'*/
  16.         var1 = prxchange('s/[^#\d]/k/',-1,var);
  17. /*step 2:change k\d to null,due to var1 may contain like 'k33',not meet '#33'*/
  18.         var2 = prxchange('s/k\d+//',-1,var1);
  19. /*step 3:change step 1 the character 'k' to null*/
  20.         var3 = prxchange('s/k//',-1,var2);
  21. /*step 4:change '##33' to '#33'*/
  22. if prxmatch('/##/',var3)        then var4 = prxchange('s/##+/#/',-1,var3);else var4=var3;
  23. /*step 5:change the second or far '#' to ',' ,the begining '#' will ignore*/
  24. if substr(var4,1,1)='#' then var5 = prxchange('s/#/,/',-1,substr(var4,2));
  25.      
  26. run;
复制代码


output

prx.PNG (18.69 KB)

prx.PNG

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-21 06:58