Sas 如果是proc sql“;分组依据”;小组没有任何观察结果

Sas 如果是proc sql“;分组依据”;小组没有任何观察结果,sas,proc-sql,Sas,Proc Sql,我在《SAS企业指南》中工作,正在运行proc sql查询,如下所示: proc sql; CREATE TABLE average_apples AS SELECT farm, size, type, mean(apples) as average_apples FROM input_table GROUP BY farm, size, type ; quit; 对于我正在运行此查询的某些数据集,有一些组没有为其分配观测值,因此在查询输出中没有它们

我在《SAS企业指南》中工作,正在运行proc sql查询,如下所示:

proc sql; 
    CREATE TABLE average_apples AS
    SELECT farm, size, type, mean(apples) as average_apples
    FROM input_table
    GROUP BY farm, size, type
    ;
quit; 
对于我正在运行此查询的某些数据集,有一些组没有为其分配观测值,因此在查询输出中没有它们的条目

如何强制此查询为我的每个组返回一行(例如,
apples
列中的值为
0

首先感谢您的帮助!

我会这样做:

/* sample input table */
data input_table;
length farm size type $3 apples 8;
stop; /* try also with this statement commented out 
         to check the result for non-empty input table */
run;

proc sql; 
    CREATE TABLE average_apples AS
    SELECT farm, size, type, mean(apples) as average_apples
    FROM input_table
    GROUP BY farm, size, type
    ;
quit;

%let group_rows = &SQLOBS;
%put &group_rows;

data average_apples_blank;
if &group_rows ne 0 then set average_apples(obs=0);
else do;
   array zeros {*} _numeric_ /* or your list of variables */;
   do i=1 to dim(zeros);
      zeros[i] = 0;
   end;
   output; /* empty row */
end;
drop i;
run;


proc append base=average_apples data=average_apples_blank force;
run;
试试这个

proc sql;
select f.farm, s.size, t.type, coalesce(mean(apples), 0) as average_apples
from (select distinct farm from input_table) as f
   , (select distinct size from input_table) as s
   , (select distinct type from input_table) as t
left join input_table as i
  on i.farm = f.farm and i.size = s.size and i.type t.type;
quit;

不过,我没有测试它。它不起作用,请将其放在注释中,我将对其进行调试。

如果您提供一些示例源数据,回答起来会更容易。看起来您有一个数据集,它将水果(例如苹果)的值存储在单独的列中,而不是有一个列来标识水果和一个单独的值列(这是一种更正常的结构)。您是说对于某些数据集,查询中引用的列不存在吗?您是否有一个包含所有组(即农场大小类型的所有组合)的数据集您希望在输出中包含哪些内容?如果是,您可以将其连接到输出表中。Hi-Dirk。当我运行此操作时,会出现以下错误:
错误:子查询中不包含对列场的相关引用。