SAS Function

最近项目没有那么紧张了,所以准备了解一些让日常工作更为便捷的一些函数或是macro.博采众家之长,在此仅做记录。有任何引用我都会在末尾附上原网址。尊重版权人人有责。

*COMPBL

去除字符串中多余的空格,也就是将连续的多个空格转化为1个空格。

如:

data test;

string='ab  cxy  z        pq   '

;

data a;

set test;

x=compbl(string);

run;

输出为:ab cxy z pq,多个空格变成一个空格。

compress的区别:

compress(string)输出为abcxyzpq,去掉所有的空格,当然还能去掉指定的字符;

而compbl是将多个空格变成一个,对于单个空格没有影响。

*DEQUOTE

去除字符串中的配对引号,且该字符串是以该引号开始的,并且去掉与之配对的后引号之后的全部内容。

啰嗦了,举个例子:y=dequote(x);

"我是'我'的"我""    我是'我'的

"你"是你的'你'      你

他是他的"他"        他是他的"他"

她们还是她们        她们还是她们

'它是'它'的它'        它是

Source from:SAS之COMPBL、DEQUOTE函数 - Sunny Qiang - 博客园 (cnblogs.com)

宏%PUT

此宏语句将文本或宏变量信息写入SAS日志。 在下面的例子中,变量“today”的值被写入程序日志。

data _null_;

CALL SYMPUT ('today',

TRIM(PUT("&sysdate"d,worddate22.)));

run;

%put &today;

宏%RETURN

当某个条件的计算结果为真时,执行该宏将导致当前执行的宏正常终止。 在下面的示例中,当变量“val”的值变为10时,宏终止其它连接。

%macro check_condition(val);

  %if &val = 10 %then %return;

    data p;

      x=34.2;

    run; 

%mend check_condition; 

%check_condition(11)  ;

宏%END

此宏定义包含一个%DO%WHILE循环,根据需要以%END语句结束。 在下面的示例中,名为test的宏采用用户输入,并使用此输入值运行DO循环。 DO循环的结束通过%end语句实现,而宏的结束通过%mend语句实现。

%macro test(finish);

  %let i=1;

  %do %while (&i <&finish);

      %put the value of i is &i;

      %let i=%eval(&i+1);

  %end;

%mend test;

%test(5)

Source from:SAS宏_w3cschool

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容