SAS中的压缩功能

时间:2015-03-02 03:37:03

标签: sas

我想从字符串中删除多个空格。

%let CDate = 25Mar2015;

data _null_;
call symput('TitleDate',cat(put("&CDate."d,monname9.),', ',year("&CDate."d)));
run;

%put &TitleDate; /* March, 2015 */
%put Title is &TitleDate; /* multiple blanks between 'is' and 'March' */

我尝试compress%put Title is %sysfunc(compress(&TitleDate));但它返回Title is March而没有年份。

1 个答案:

答案 0 :(得分:2)

非常接近,有两处修改:

  1. CALL SYMPUTX而不是CALL SYMPUT
  2. WORDDATE20。格式而不是cat / put组合

    call symputx('TitleDate',put("&CDate."d,worddate20.));
    
  3. 编辑(回答评论中的问题): compress函数有3个参数,第一个是强制的,后两个是选项。

    压缩功能不起作用,因为SAS看到的是:

    压缩(2015年3月25日) 这是对compress函数的无效调用。我认为压缩函数会假设第二个参数是2015年,我不知道它对25的作用。我实际上会期望它产生错误,但它并没有。

    如果你确实想要使用compress函数传入一个字符值,你需要使用%quote函数引用它,但是这会消除所有空格,我想你只是想摆脱领先空间。

    %put Title is %sysfunc(compress(%quote(&TitleDate.)));