美文网首页SAS编程
Special Characters in SAS

Special Characters in SAS

作者: SASPRO的打工人生活 | 来源:发表于2021-10-05 21:37 被阅读0次

    国庆转眼就剩两天了,过的太快了!不知道是年纪大了觉得时间过的飞快还是怎么了,总之就是感觉眼睛一睁一闭,一天就过去了。

    今天介绍一些 Special Characters在SAS中如何输出,什么是Special Characters?就像一些希腊字母或者%,¥,#,等等。注意这些都是在输出RTF或者EXCEL文件的时候才会生效,如果你直接写

    data test;

    a="{unicode '002A'x}";    **这个unicode对应的字符是 *;

    run;

    你说怎么没转换成“*”啊,注意,你用引号括起来,SAS只会把他当作一个文本,你写成什么样,SAS数据集只是保留原样。

    一:想必大家可能都遇到下面这个错误:

    ERROR: Some character data was lost during transcoding in the dataset DB.LABS. Either the data contains characters that are not representable in the new encoding or truncation occurred during transcoding.

    原因可能是你在中文服务器环境下跑英文编码的文件,也有可能是文件中的一些特殊字符在转换的时候发生错误,或者是其他一些原因:大家不妨试一下下面这种方法,具体能不能解决问题我还不知道,毕竟最近没遇到这个问题。

    data temp;

        set XXX (encoding='asciiany');

    run;

    二:查看对应特殊字符的编码

    大家可以通过下面这种方式(byte)查看数字对应的特殊字符输出。

    data _null_;

    do k=1 to 255;

    x=byte(k);

    put k +10 x;

    end;

    run;

    获得到对应的字符:

    这时候你就可以直接通过data步获得到特殊字符,但是不知道是什么原因,有些特殊字符没显示,不知道是不是数字超出了范围,还是说其他一些原因。

    三:ods输出报表,利用unicode编码输出特殊字符。

    有时候我们输出rtf等文件,尤其是处理LB相关的table和listing,经常会遇到百分号(%),但是这个符号特殊在SAS可能把它后面跟着的内容当作是宏引用,但是不是宏啊,所以就总是报错。

    除了用%nrstr让SAS不去解析这个百分号,亦可以用第二种方法,也就是byte,像下面这样,就不用忍受遇到 % SAS总是报错了。

    还可以利用unicode编码输出百分号。(数据集中没用,文章刚开始讲了,看下面的例子:(来自SAS官网)

    %对应的unicode编码是0025,这个你可以直接百度搜索unicode编码表,对应输出的数据集

    对应输出的report,可以看到l列并没有被解析,但是label列被解析了,所以应该就是这个(*ESC*)的作用。大家也可以创建一个宏变量代替这个unicode编码,比如 %let cc=(*ESC*){unicode '2193'x},到时候直接引用宏变量&cc就好了.

    SAS官网也说了:

    想详细了解的可以直接在SAS官网搜索“Special Characters”.

    *********************************************

    这几天过的真的不开心,感觉自己有点抑郁了。不开心,难受!

    相关文章

      网友评论

        本文标题:Special Characters in SAS

        本文链接:https://www.haomeiwen.com/subject/ittnnltx.html