SAS中compress函数的用法

如题,最好能写出一段程序说明一下compress函数的用法。谢谢... 如题,最好能写出一段程序说明一下compress函数的用法。谢谢 展开
 我来答
qinqqt
高粉答主

2019-07-05 · 醉心答题,欢迎关注
知道小有建树答主
回答量:948
采纳率:100%
帮助的人:23.5万
展开全部

SAS中COMPRESS 函数的功能:从一个字符串移除特定的字符。 

语法表达式为COMPRESS(<source> <, chars> <, modifiers> ) ,其中,第一个<source>参数表示的是:字符串,变量或者表达式,是将要被做处理的数据源。第二个<, chars> 参数表示的是:特定的字符常量,变量或表达式。第三个<, modifiers>参数是一些固定的参数值,默认是空格。

例:

1、去掉空格

data s ;

a='AB C D ';

b=compress(a);

put b;

run ;

输出结果:ABCD

2、参数<, modifiers>l或者L,在<, chars>列表中自动添加小写字符。

如:data s ;

x='123-4567-8901 B 234-5678-9012 c';

y1 = compress(x,'ABCD');

y2 = compress(x,'ABCD','l');

put y1 y2;

run ;

输出结果:

y1 = 123-4567-8901234-5678-9012 c               

y2 = 123-4567-8901234-5678-9012

加了l参数的 y2 将小写字母c也给去掉了 .

扩展资料:

COMPRESS 函数----从一个字符串移除特定的字符。
表达式:COMPRESS (<source>,<chars>,<modifiers>)

例如:

移除Tab

data _null_;

x='1   2    3    4   5';

y=compress(x,' ');

put y;

run;

结果是12345。

百度网友4e1e372
推荐于2017-09-17 · TA获得超过322个赞
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:98.6万
展开全部

COMPRESS 函数

【功能】从一个字符串移除特定的字符

Syntax

compress (<source, chars><, modifiers>)

source: 指定一个字符串来源
chars: 指定要删除或者保留的字符列表,需用引号
modifiers: 指定修饰符,不区分大小写,用来控制 compress 函数的具体功能。如:

  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='ABC D ';
  b=compress(a);
  put b;
  run;

  结果是ABCD。

Example 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;


Example 3:移除Tab  

data _null_;
  x='1
  2
  3
  4
  5';
  y=compress(x,,'s');
  put y;
  run;

  结果是12345。

  Example 4:保存字符  

data _null_;
  x='Math A English B Physics A';
  y=compress(x,'ABCD','k');
  put y;
  run;

  结果是ABA.



Reference:

http://blog.sina.com.cn/s/blog_49040b720100qbv4.html

http://tj.100xuexi.com/ExtendItem/OTDetail.aspx?id=55DCE428-12F0-4DF6-8270-F1148A367F7E

追问
谢谢你的回答,这个在哪里看到过。。。就是看不懂才到这里发问的,能与几个简单的例子吗,这太长了。
追答

额....太长....

简单说来,就是compress是一个字符串函数,实现的功能就是字面意思“压缩;精简”。

data _null_;
  a='ABC D ';
  b=compress(a);
  put b;
run;

就是把空格“压缩”掉;

如果给出<chars>选项,则会在<source>里面删除掉<chars>以达精简的效果。

data test; 
set have; 
char1=compress(char,"abcdefghijklmnopqrstuvwxyzE"); 
run;

这里就是删除小写字母和E。

另外还有就是 给出modifier来控制语句的功能,

data test; 
set have; 
char1=compress(char,"E","l"); 
run;

可以达到跟前一个例子相同的结果。

剩下的一些不同的modifier的不同功能你看上面的回答就可以了。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
燕子旧岁之2414
2016-11-02 · TA获得超过6940个赞
知道大有可为答主
回答量:1万
采纳率:32%
帮助的人:1648万
展开全部
tongjizhixing工作室上也看到了类似的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式