美文网首页SAS编程
input中加问号的的作用

input中加问号的的作用

作者: SASPRO的打工人生活 | 来源:发表于2021-03-08 20:07 被阅读0次

对于初学SAS的人来说,在处理数据的时候,经常会遇到一些“不寻常”的处理。

例如,我们在将数据从字符型转换成数值型时,一般会这样处理:

a=input(b,best.)

但是有时候我们会看到有这样的写法:

a=input(b,??best.)

这里的问号的作用是什么呢?下面我就将通过实例带你们了解问号的作用。

第一步:输入数据。

data test;

    input id score $;

cards;

01 96a

02 67

03 89c

04 58

05 99

;

run;

第二步:将变量score转换成数值型。

data test2;

set test;

score2=input(score,best.);

run;

可以看到对于不规范的数据,SAS将值变为空,同时log中报错,这在项目中是不允许的。

第三步:在input中加入问号。

对于无效的数据,SAS将值转换为空值,同时log中并没有报错。

data test3;

set test;

score2=input(score,??best.);

run;

从上面的例子中我们可以看出,??的作用就是将无效的数据转换为空值,同时不会在log窗口输出错误信息。不管是在将字符型数据转换为数值型还是说日期转换的时候,用??都能防止出现那种状况。

其实还有只用一个?的情况,但是我觉得和不输入问号的结果都是一样的,还会报错,只是报的错误不一样罢了。具体的你们自己可以去试试。下面附上?和??的英文解释:

?  modifier suppresses the invalid data message.

?? modifier also suppresses the invalid data message and prevents setting _error_ to 1 for invalid data.

在实际应用中,适当运用这种方法能有效防止log报错,因为当我们从DM那获取的数据,有时候可能是“脏数据”。至于要不要将数据转换为空值,要根据具体项目而定。

相关文章

网友评论

    本文标题:input中加问号的的作用

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