SAS常用函数学习(一、字符类函数)

一、字符类函数:

(一)提取字符串中字符、数字或空格所在位置的函数

(1)Anyalnum(参数,n)  /*从n开始计算出现第一个字符或者数字的位置是多少*/

eg1:

data _null_;/*当不想产生数据集时在data后使用_null_关键字*/
a='321 abc';
b=anyalnum(a,4);/* or b=anyalnum(a,3)   结果:b=3*/
put b=;
run;

结果:b=5

eg2: Anyalnum函数的应用 Scanning a String from Left to Right;

data _null_;

   string='Next = Last + 1';/*=号前后各有一个空格*/
   j=0;
   do until(j=0);
      j=anyalnum(string,j+1);
      if j=0 then put +3 "That's all";
      else do;
         c=substr(string,j,1);
         put +3 j= c=;
      end;
   end;
run;

The following lines are written to the SAS log:

   j=1 c=N     j=2 c=e     j=3 c=x     j=4 c=t     j=8 c=L     j=9 c=a     j=10 c=s     j=11 c=t     j=15 c=1     That's all

(1)Anyalnum(参数,n)  /*从n开始计算出现第一个字符或者数字的位置是多少*/

(2)Anyalpha(参数,n)/*不输入n时返回第一个字符的位置,输入n时从n开始第一次出现字符的位置*/
(3)anydigit( 参数,n)/*不输入n时返回第一个数字的位置,输入n时从n开始第一次出现数字的位置*/
(4)anyspace(参数,n)/*不输入n时返回第一个空格的位置,输入n时从n开始第一次出现空格的位置*/
 
eg:
data _null_;
a='123 e st ,#2 ';
R_alpha1=anyalpha(a,3);
R_alpha2=anyalpha(a,10);
R_digit1=anydigit(a,3);
R_digit2=anydigit(a,10);
R_space1=anyspace(a,3);
R_space2=anyspace(a,10);
put 
R_alpha1=
R_alpha2=
R_digit1=
R_digit2=
R_space1=
R_space2=
run;
结果:
R_alpha1=5 R_alpha2=0
R_digit1=3 R_digit2=12 
R_space1=4 R_space2=13
(二)字符连接类函数
(1)Cat(arg1,arg2,....argn)/*连接字符串并且保留原来字符串之间的空格*/
(2)Cats(agr1,arg2,...,argn)/*连接字符串并且去掉原来字符之间的空格*/
(3)Catx('separator-sign',arg1,arg2,...,argn)/*连接字符串去掉字符串间的空格增加设定的连接符*/
 
eg:
data _null_;
a='  Dog';
b='Cat  ';
c='Pig ';
R_cat=cat(a,b,c);
R_cats=cats(a,b,c);
R_catx1=catx('&',a,b,c);
R_catx2=catx('@',a,b,c);
put R_cat=
R_cats=
R_catx1=
R_catx2=
;
run;
 
结果:
R_cat=DogCat  Pig 
R_cats=DogCatPig 
R_catx1=Dog&Cat&Pig 
R_catx2=Dog@Cat@Pig
(三)其他字符串类函数
(1)compress(arg,'sign')/*压缩字符串移除字符串中指定的符号默认移除空格*/
 
eg:
data _null_;
a='  Dog  &cat ';
R1=compress(a);
R2=compress(a,'&');
put R1=
R2=
;
run;
 
结果:
R1=Dog&cat R2=Dog  cat
(2)Index(arg,'string')/*返回指定字符串的起始位置*/
(3)length(str) *返回指定字符串的长度 字符串尾部的空格不计算在内*/
 
eg:
data _null_;
a='Dogcat';
b=' Dog cat';
c=' Dog cat   ';
Ra=length(a);
Rb=length(b);
Rc=length(c);
put Ra=
Rb=
Rc=
;
run;
 
结果:
Ra=6 Rb=8 Rc=8
(3)Substr(str,n,m)/*从位置n开始从字符串中提取m个字符*/
(4)Translate(string,to,from,<,...to-n,from-n>) 
Eg:
data _null_;
A='8/14/2010';
B=translate(a,'-','/');
put
B=
;
run;
结果:
B=8-14-2010
(5)Tranwrd(str,’from’,’to’)
Eg:
data _null_;
A='dog cat';
B=tranwrd(a,'cat','pig');
put;
B=
;
run;
结果:
B=dog pig
(6)trim(string) /*remove trailing blanks from string express*/
(7)upcase(string)/*convert all the letter into upcase*/
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值