2016-04-26 8 views

答えて

3

私はあなたが望むものを正しく理解することを願っています。

あなたがこのような結果をもたらすことになる。この

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; 

ようdatastepを試みることができる:

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

obnrは、...明らかにわずかに短い

+0

@tomありがとう!できます! – bobby1232

+0

私の結果でobnrを持っていることの1つは、すべての行で1000だけを設定します。 – bobby1232

+0

あなたは簡単にobnr = _n_; obnr = obnr + 1000の代わりに。同じ結果につながるはずです。そうでなければ、私はあなたが私のコードをコピーした場合、なぜ1000にとどまるのかわかりません... – kl78

1

もう一つのオプションです、 CEIL -functionおよびPROC FREQ-手順を利用する:

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

ありがとう!それは実際に動作します – bobby1232

関連する問題