Sas 如果是proc sql“;分组依据”;小组没有任何观察结果
我在《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; 对于我正在运行此查询的某些数据集,有一些组没有为其分配观测值,因此在查询输出中没有它们
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。当我运行此操作时,会出现以下错误:
错误:子查询中不包含对列场的相关引用。