美文网首页SAS Log debug
295:SAS输出统计量对应的变量名出错

295:SAS输出统计量对应的变量名出错

作者: SASPRO的打工人生活 | 来源:发表于2023-12-30 15:09 被阅读0次

最近遇到一个问题,我觉得大家以后说不定都会遇到,所以在这分享给大家。

我们知道SAS变量名只能以下划线或者字母开头,然后由字母、数字、下划线组成。
但是最近在用proc glm,把统计量输出到数据集的时候,对应的变量名却是以数字开头,这是在运用统计模型的时候,SAS它就直接输出这样的变量名,也没有报错,重新打开SAS,再跑程序也没有问题,但是在batch ruu的时候,却提示不能采用这样的变量名。

下面见具体例子,以《sdtm-adam-pilot-project-master》里的ADVS数据集为例,计算两两比较的t值:

对应的程序是这样的:

image.png

对应输出统计量的数据集是这样的:

image.png

根据前面的说明,变量名是不能以数字开头的,但是log窗口里面也没有任何报错信息(先忽略那个自动画图的warning)

image.png

上面是在SASEG跑出来的结果,现在我们在SASbase里面试一下:

image.png

SAS base也没有报错,但是关键的问题来了,你肯定要对DIFF_pchg这个数据集里面的变量进行处理,好出report,但是在SASEG,你像下面这样处理数据集不会报错:

image.png image.png

但是在SASbase却会报错

image.png

虽然说在SASEG里面你确实可以写成‘3’n这样的形式,但是首先这样就违背了SAS变量名的基本原则。如果是给DM出个报告,只要能输出正确的值就可以了,但是如果是递交给CDE,建议还是不要这样。
那么如何解决这个问题呢?

很简单,一个options就可以了。
options validvarname=v7;
这个系统选项的作用就是在SAS运行的时候,输出符合SAS规范的变量名

image.png

加上这个选项之后,输出上面的pdiff_pchg数据集,那个3就会自动变成_3,这样我们就可以在接下来的数据集对变量进行处理了。
大家还可以注意另两个选项,其中一个“any”,我看SAShelp的解释,就是如果你是options validvarname=any;那么我们刚才的'3'n就可以正常rename了,但是不建议大家这样,可能出现一些意想不到的结果。

好了,最后我们来处理那个warning,

其实这个warning应该是result窗口展示图形的时候有问题,我们为了省事,可以直接在程序前面加上ods all close;这样就不会在result 窗口输出统计结果。

如果后续我们需要查看其他统计结果,可以采用

ods result on;

ods result off;

相关文章

网友评论

    本文标题:295:SAS输出统计量对应的变量名出错

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