如何计算数据集SAS中的每1000个观察值

时间:2016-04-26 12:04:37

标签: sas

案例是

我有一些按一些变量排列的数据集。

我需要从开始时每1000次观察并计算一次field1 = 1,然后以相同的方式计算接下来的1000次观察 我该怎么做?谢谢!

2 个答案:

答案 0 :(得分:3)

我希望我能正确理解你想要的东西。

您可以尝试像这样的datastep

data result (Keep=countob obnr);

retain obnr 1000;
retain countob 0;

set mydata;
if field1=1 then
countob=countob+1;

if mod(_n_,1000) = 0 then do;
output;
obnr=obnr+1000;
countob=0;
end;
run;

这将导致这样的结果:

obnr | countob
------------
1000 | 247
2000 | 325
3000 | 198

obnr显然是可选的......

答案 1 :(得分:1)

另一种略短的方式,使用CEIL - 函数和PROC FREQ - 过程:

data want;
  set have;
  thousand=ceil(_N_/1000)*1000;
run;
proc freq data=want;
  tables thousand / out=want;
  where field1=1;
run;