SAS 中使用 Compress 函数删除或保留字符串中特定字符
http://blog.sina.com.cn/s/blog_6bc061630100qixy.html
SAS 中的 compress() 函数主要用来删除字符串中的特定字符,不少 SAS 用户都以为这个函数只是用来删除空格,其实 compress() 函数的功能远不止如此,它可以删除或保留字符串中的特定字符。本文就几个小例子,介绍一下该函数的具体用法。
1. compress() 函数的基本形式
Syntax
compress (<source><, chars><, modifiers>)
Arguments
source: 指定一个字符串来源
chars: 指定要删除或者保留的字符列表,需用引号
modifiers: 指定修饰符,不区分大小写,用来控制 compress 函数,常用的修饰符及意义见本文的最后部分
2. compress() 函数应用举例
已有数据集 have:
data have; input char $20.; cards; Elek dot Me Yuewei-Liu HOME-027-8765 4321 ; run;
例1. 删除空格:可以直接省去第二和第三个 Arguments,也可以明确将空格加入到字符串列表中,也就是第二个 Argument。
data test; set have; char1=compress(char); run; data test; set have; char1=compress(char,” “); run;
例2. 使用修饰符删除小写字母:将修饰符设定为”l”,代表 lowcase,即将所有的小写字母加入到要删除的字符列表中;如不用修饰符”l”,也可以直接把所有a-z的小写字母列入要删除的字符串列表当中,效果一样,但显然前者比较简单;本例可以将所有小写字母和大写的”E”从指定的字符串中删除。
data test; set have; char1=compress(char,”E”,”l”); run; data test; set have; char1=compress(char,”abcdefghijklmnopqrstuvwxyzE”); run;
例3. 保留指定的字符:字符列表的定义与前面类似,只需将”K”或”k”写入修饰符,或者在字符串列表中加入所有数字。本例为保留所有数字和”HOME“中的字符。
data test; set have; char1=compress(char,”HOME”,”dk”); run; data test; set have; char1=compress(char,”HOME1234567890″,”k”); run;
附:常用的修饰符及其意义
a/A 所有拉丁字母,包括 a-z A-Z d/D 所有数字 f/F 下划线和所有拉丁字母 i/G 忽略要删除或保留字符的大小写 k/K 保留字符串列表中的字符 l/L 所有小写拉丁字母 n/N 下划线,数字和所有拉丁字母 s/S 定位符,如空格、tab等 t/T 去掉第一和第二个 Arguments 里的尾部空格 u/U 所有大写拉丁字母
SAS函数 – compress
http://blog.sina.com.cn/s/blog_73249b5f0100wvm2.html
COMPRESS 函数—-从一个字符串移除特定的字符
COMPRESS (<source>,<chars>,<modifiers>)
source 指定一个要被移除字符的源字符串。
chars 指定一栏初始字符,默认它是要从source里移除的。
modifiers 指定一个修饰符,函数的具体功能。如:
a 增加(A – Z, a – z)到初始字符里(chars)。
d 增加数字到初始字符里(chars)。
f 增加下划线和字母 (A – Z, a – z) 到初始字符里(chars)。
g 增加图形字符到初始字符里(chars)。
k 不移除初始字符(chars)而是返回这些字符。
l 增加小写字母(a – z)。
n 增加数字、下划线和字母(A – Z, a – z)。
p 增加标点符号。
s 增加空格,包括空格,水平制表符,垂直制表符,回车符,换行符和换页符。
t 剪掉尾部空格。
u 增加大写字母(A – Z)。
w 增加可印刷的字符。
X 增加十六进制字符
1. 只有source,移除空格。
2. 只有source,chars时,从source中移除chars。
3. source ,chars,modifiers都有时,modifiers K决定保留还是移除。无K时,移除chars加上modifiers指定的。例如这两都是移除数字,COMPRESS(source, “1234567890”);compress(source, , “d”);这两个是移除数字和加减号,COMPRESS(source, “1234567890+-“);COMPRESS(source, “+-“, “d”);
Example 1:移除日期中的/。
data _null_;
a=’2010/11/19′;;
b=compress(a,’/’);
put b;
run;
结果是20101119。
Example 2:移除大写字母和-。
data _null_;
x=’123-4567-8901 B 234-5678-9012 c’;
y=compress(x,’-‘,’u’);
put y;
run;
结果是12345678901 23456789012 c。
Example 3:移除Tab
data _null_;
x=’1 2 3 4 5′;
y=compress(x,,’s’);
put y;
run;
结果是12345。
Example 4:移除Tab
data _null_;
x=’1 2 3 4 5′;
y=compress(x,’ ‘);
put y;
run;
结果是12345。