统计量值用PROC MEANS过程步很容易计算,在得到各个统计量数值之后,可以直接简单的用put语句输出实现小数点位数的控制。当然,这样操作的前提是我们知晓变量值的最大的小数位数,如果说明文明中有说明我们就可以直接采用;如果没有说明, 我们如何操作呢? 首先, 肯定不可以直接手动去数据集中查找, 肉眼看出最大位数后, 进行编程。这样的程序不够稳定,不能每次跑程序都用肉眼去看;其次,对于观测数过大的数据集,单从肉眼手动查,很不现实。
这里提一句程序化思维很重要,这一点我深有体会。在我刚开始编程的时候,我喜欢手动处理每一个问题。简单来讲,就是不去寻找程序化的解决方法,而是通过单独处理孤立的问题。就拿获取数值最大小数位数来举例,如果不是遇到观测数比较大的数据集,以前的我很可能就是一条记录一条记录地肉眼去看,然后获取结果。现在呢?我会尽量去解决相同内在逻辑的问题。我会写一个程序去寻找最大值,类似这样:
有了这个程序,就可以避免在通过人工来查找变量的最大位数,使程序更加稳定。可以说解决了这个问题,那后面如何处理呢?这个简单的程序块有没有继续改进或增加功能呢?这只是对一整个数据分析,是否可以实现分组呢?显然是可以的。
以上步骤后,就可以直接在代码中调用宏变量值了。这里有一个注意点,SAS中,宏变量存储是以字符形式存在的,所以要在程序中先将最大位数由数值转换为字符格式(strip(put( presion,best.))),不然会有Warning生成。这里其实还有一点可以引申的, 不同的统计量, 所规定的小数位数也是不一样, 但都是在最大小数位数上进行增减的, 我们可以直接将特定统计量的小数位数做到宏变量中, 在编程的过程中统一调用。