如何使用SAS对变量求和并记录最后一行的总数

时间:2015-10-31 14:54:03

标签: sas

我的数据集如下所示:

Name   Number
a      1
b      2
c      9
d      6
e      5.5
Total  ???

我想计算变量Number的总和,并记录最后一行的总和(对应于Name ='total')。我知道我可以使用proc方法执行此操作然后将输出合并回此文件。但这似乎不是很有效。谁能告诉我有没有更好的方法呢。

4 个答案:

答案 0 :(得分:4)

您可以在数据集中执行以下操作:

data test2;
drop sum;
set test end = last;
retain sum;
if _n_ = 1 then sum = 0;
sum = sum + number;
output;
if last then do;
NAME = 'TOTAL';
number = sum;
output;
end;
run;

只需一次通过数据集

答案 1 :(得分:1)

以下代码使用DOW-Loop(DO-Whitlock)通过读取一次观察结果,输出每一个,然后最后输出总数来实现结果:

data want(drop=tot);
  do until(lastrec);
    set have end=lastrec;
    tot+number;
    output;
  end;

  name='Total';
  number=tot;
  output;
run;

此致 阿米尔。

答案 2 :(得分:1)

通过报告程序很容易获得。

data have;
input Name $  Number ;
cards;
a      1
b      2
c      9
d      6
e      5.5
;

proc report data=have out=want(drop=_:);
rbreak after/ summarize ;
  compute after;
     name='Total';
  endcomp;
run;

答案 3 :(得分:0)

对于所提供的所有数据步骤解决方案,请务必牢记“长度”和“长度”。因子。确保它能同时满足' Total'和原始值。

proc sql;
select max(5,length) into :len trimmed from dictionary.columns WHERE LIBNAME='WORK' AND MEMNAME='TEST' AND UPCASE(NAME)='NAME';
QUIT;

data test2;
length name $ &len;
set test end=last;
...
run;