如何在SAS数据集中统计每1000个观察值
我有一些数据集按变量排序 我需要从一开始就每1000次观察,计算其中field1=1,然后用同样的方法计算下1000次观察如何在SAS数据集中统计每1000个观察值,sas,Sas,我有一些数据集按变量排序 我需要从一开始就每1000次观察,计算其中field1=1,然后用同样的方法计算下1000次观察 我该怎么做呢?我希望我能正确理解您的要求 您可以尝试这样的数据步骤 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; outp
我该怎么做呢?我希望我能正确理解您的要求 您可以尝试这样的数据步骤
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显然是可选的…我希望我能正确理解您的要求 您可以尝试这样的数据步骤
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显然是可选的…另一种略短的方式,利用
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;
另一种略短的方式,利用
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;
有一件事我的结果集中有obnr,每行只有1000个,你也可以简单地尝试obnr=\u n;而不是obnr=obnr+1000;这应该会导致同样的结果。否则,如果复制我的代码,我不知道为什么它会保持在1000…有一件事,我的结果集中的obnr在每行中只有1000个,您也可以简单地尝试obnr=\u n;而不是obnr=obnr+1000;这应该会导致同样的结果。否则我不知道如果你复制我的代码为什么会保持在1000。。。