案例是
我有一些按一些变量排列的数据集。
我需要从开始时每1000次观察并计算一次field1 = 1,然后以相同的方式计算接下来的1000次观察 我该怎么做?谢谢!
答案 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;