我有一个proc报告,分组并进行小计。如果我在组中只有一个观察,则小计是无用的。我想要不做该行的小计或不做那里的观察。由于格式\风格不一致,我不想使用行语句。
这是一些示例数据。在报告中,Tiki(我的猫)行应该只有一行,数据中的obs或小计...
data tiki1;
name='Tiki';
sex='C';
age=10;
height=6;
weight=9.5;
run;
data test;
set sashelp.class tiki1;
run;
答案 0 :(得分:1)
看起来你正在尝试做proc report
无法一次完成的事情。但是,如果您只想要在此处描述的输出是一种不使用proc report
的方法。
proc sort data = test;
by sex;
run;
data want;
length sex $10.;
set test end = eof;
by sex;
_tot + weight;
if first.sex then _stot = 0;
_stot + weight;
output;
if last.sex and not first.sex then do;
Name = "";
sex = "Subtotal " || trim(sex);
weight = _stot;
output;
end;
keep sex name weight;
if eof then do;
Name = "";
sex = "Total";
weight = _tot;
output;
end;
run;
proc print data = want noobs;
run;
此方法通过获取滚动总和手动创建数据集中的小计和总计。如果你想要花哨的格式化,你可以通过proc report
而不是proc print
传递这些数据,Joe给出了一个例子here。