在SAS中读取句点作为字符值

时间:2013-10-04 07:37:47

标签: sas

我正在读一段时间'。'作为字符变量的值,但它将其作为空白值读取。

data output1;
input @1 a $1. @2 b $1.  @3 c $1.;
datalines;
!..
1.3
;
run;

Output       Required
------       --------
A  B  C      A  B  C
!            !  .  .
1     3      1  .  3

请帮助我阅读一段时间。

2 个答案:

答案 0 :(得分:11)

输出由所使用的信息确定(在您的情况下为$ w。信息,由$1.在您的代码中请求,因此$1.首先是信息定义,变量的长度定义是这方面的副产品。)

使用$ char。所需结果的信息。

data output1;
input @1 a $char1. @2 b $char1.  @3 c $char1.;
datalines;
!..
1.3
;
run;

来自文档:

$ w Informat $ w。信息修剪前导空格并在存储文本之前左对齐值。此外,如果字段仅包含空格和单个句点,则为$ w。将句点转换为空白,因为它将句点解释为缺失值。 $ w。 informat将字段中的两个或多个句点视为字符数据。

$ CHARw。了信息 $ CHARw。在存储值之前,informat不会修剪前导和尾随空白或将输入数据字段中的单个句点转换为空白。

答案 1 :(得分:0)

我不会立即明白为什么它不起作用。 但是如果你不想弄清楚为什么它不起作用,只是想要做的事情:把它作为长度$ 3的1个变量读出来。然后在下一步;使用substr。

拆分它

如,

data output1;
    length tmp $3;
    input tmp;
    datalines;
        !..
        1.3
    ;
run;
data output2 (drop=tmp);
    length a $1;
    length b $1;
    length c $1;

    set output1;

    a=substr(tmp,1,1);
    b=substr(tmp,2,1);
    c=substr(tmp,3,1);
run;