关于Proc SQL一个日志Note的介绍

2021-01-11  本文已影响0人  野藤_

在一个项目的SAS程序log的检查中,一个关于Proc SQL的Note一直存在,在我们公司它是可以接受的。我简单说明下它产生的原因。这个Note的具体内容是:

Note: The query requires remerging summary statistics back with the original data.
(该查询需要将汇总统计信息重新与原始数据合并。)

我用SASHELP逻辑库中的Class进行演示说明这个Note是如何产生的。在日常的统计分析中,汇总分析很常见,比如计算各分组的计数、均数、标准差等等统计量。下面我用SQL步来计算班级男女身高的计数和均数。

代码如下:

proc sql noprint;
  create table a as
    select sex, count(height) as n, mean(height) as mean
    from sashelp.class
    group by sex;
quit;

输出数据集如下:


Output1

日志结果显示也是正常的:


Log1

这时候我们更新一下代码,把Class数据集中其他变量保存下来。

proc sql noprint;
  create table a as
    select *, count(height) as n, mean(height) as mean
    from sashelp.class
    group by sex;
quit;

输出数据集如下:


Output2

日志结果也出现了开头提到的那个Note:


Log2

这个结果如何解释呢?在使用Proc SQL进行分组汇总时,如果要保留除分组变量外的其他原始变量时,SAS会自动将分组汇总的结果,以分组变量为连接,合并到原始数据记录中。如果不保留其他原始变量,SAS仅按组别展示汇总信息(记录数与组别数目一致)。

如果只保留一个原始变量,可能更容易理解一点:

proc sql noprint;
  create table a as
    select name, count(height) as n, mean(height) as mean
    from sashelp.class
    group by sex;
quit;
Output3 Log3

如有疑问,欢迎评论区留言反馈。

上一篇下一篇

猜你喜欢

热点阅读