SAS函数——字符函数

一、计算变量的长度

基本格式:

  • length(变量):对缺失值返回1。
  • lengthn(变量):对缺失值返回0。

注意:

  1. 长度不包括尾部空。
  2. 数值型长度默认为12。
data iden;
    input iden $;
    length_1=length(iden);
    length_2=lengthn(iden);
cards;
abcd
abcd123
abcd_123
.
;
proc print;
run;

 

二、提取变量中的字符

指定一个变量,对该变量从起始位置开始,提取指定长度的字符:

基本格式:
substrn(变量,起始位置<,提取长度>)

  • 起始位置:从第几个字符开始提取。
  • 提取长度:取多少个字符,默认提取到最后一位。
data iden;
    input iden:$18.;
    if length(iden)=18 then gen=substrn(iden,17,1);
    else gen=substrn(iden,15,1);
    if mod(gen,2)=1 then gender="男";
    else gender="女";
    cards;
36053319720613591x
360533801215792
360533198208254533
360522851009886
;
proc print;
run;

三、查找变量中的字符

根据指定的起始位置,找到相应的内容。

  • 如果找到,返回:找到的位置
  • 如果找不到,返回:0

基本格式:

匹配字符串:
find(变量,查找内容<,"i"> <,起始位置>)       
匹配字符串中的任意一个字符:
findc(变量,查找内容<,"i"> <,起始位置>)               

  • 查找内容:要查找的字符或字符串
  • i:忽略大小写。默认:不忽略。
  • 起始位置:从第几个字符开始查找。默认:从第一个开始。
data book;
    input book:& $100.;
    sas=find(book,"sas","i");
    if sas>0 then class="SAS书";
    else class="其他书";
    cards;
Survival Analysis Using SAS
Matlab程序设计
SPSS数据分析
SAS应用分析
The Little SAS Book
;
proc print;
run;

 

其他相关函数:

anyalpha(变量<,起始位置>)

返回第一个字母的位置。

anydigit(变量<,起始位置>)

返回第一个数字的位置。

anyalnum(变量<,起始位置>)

返回第一个字母或数字的位置。

anyspace(变量<,起始位置>)

返回第一个空格的位置。

data computer;
    input type $ @@;
    alpha=anyalpha(type);
    digit=anydigit(type);
    xh=substrn(type,alpha,digit-alpha);
    bh=substrn(type,digit,length(type)-digit+1);
/*
根据后面说到的compress函数,这两个变量值还可以这样获取
    xh=compress(type,,"d");
    bh=compress(type,,"a");
*/
    cards;
TP340 KS320 B3510 C560 H430
;
proc print;
run;

 

四、替换变量中的字符

从变量中找到“查找值”,并用“替换值”替换掉:

tranwrd(变量,查找值,替换值)

查找值和替换值:可以是字符也可以是字符串

data lx;
    input id lx$;
    lx1=tranwrd(lx,"显效","有效");
    lx1=tranwrd(lx1,"痊愈","有效");
    cards;
1 显效
2 有效
3 无效
4 痊愈
;
proc print;
run;

五、去除变量中的字符

从变量中去掉“欲去除的字符”默认为空格?

compress(变量<,欲去除的字符><,"修饰符">)

<>中的内容可以省略,但是中间的逗号不可以省略。

修饰符

a

去掉变量中的所有字母

d

去掉变量中的所有数字

s

去掉变量中的所有空格

i

忽略大小写

k

保留“欲去除的字符”,去掉其他字符

kd

保留变量中所有的数字

ka

保留变量中所有的字母

data phone;
    input phone:&$20.;
    phone1=compress(phone,"(-) ");/*去掉变量中的"("、"-"、")"、" "*/
    phone2=compress(phone,,"kd");
    cards;
(010)67658925
010-67665632
010 67685621
;
proc print;
run;

 

六、去除字符型变量中的空格

trim()去除尾部空格
left()将字符串首部空格移到尾部
strip()去除首尾两部的字符

七、变量的合并

将几个变量合并为一个变量

cats(变量1,变量2,……)

删掉前后的空格

catx("分隔符",变量1,变量2,……)

删掉前后的空格,中间用分隔符隔开,默认:分隔符=空格

cat(变量1,变量2,……)

保留首尾全部空格

SAS中也可以用"||"连接变量,用空格连接。

data code;
    input prov$ city$ county$;
    code1=cats(prov,city,county);
    code2=catx("-",prov,city,county);
    code3=prov||city||county;
    cards;
37 05 02
37 03 21
37 06 13
37 06 82
;
proc print;
run;

 

八、清点变量中某个字符的个数

从变量中找到“欲清点字符”

  • 找到了,返回:字符个数
  • 没找到,返回:0。

count(变量,欲清点的字符<,"i">)

i:忽略大小写,默认不忽略。

data ques;
    input id (y1-y10) ($);    /*输入变量y1-y10,均为字符型*/
    y=cats(of y1-y10);        /*将y1-y10合并为一个变量*/
    cy=count(y,"y","i");
    cn=count(y,"n","i");
    cards;
1 y y n Y n y n Y n n
2 y n y Y n y y Y n y
3 n y N y y y n Y y n
4 n n Y y y y N Y n y
;
proc print;
run;

 

九、查找变量中的缺失值

判断变量是否为缺失值

missing(变量)
是则返回:1
不是则返回:0

data baseline;
    input id gender$ age;
    mgender=missing(gender);
    mage=missing(age);
    cards;
1 f 60
2 m 59
3 f .
4 . 48
;
proc print;
run;

  • 5
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miya_o00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值