2012-02-04 11 views
3

バイナリファイルからSASデータセットを作成する必要があります。私のコードは:SASの入力ファイルの特定の行を効率的に読み取る

data test; 
infile 'D:\test\T201.bin' lrecl=12 recfm=f; 
input time IB4. v1 IB4. v2 IB4. ; 
run; 

入力ファイルから特定の行番号を読み取る方法はありますか?例えば、私は私がこれを追加することができます42000 44000.に行を維持したいとします

if 42000<=_n_<=44000 

が、これを行うには、より効率的な方法がある場合、私は思ったんだけど。私の理解では、この方法はSASにすべての行を読み込ませ、出力データセットで指定された行だけを保持させることになります。 SASが特定の行に直接ジャンプできる方法はありますか? (処理するテラバイトのデータがあるので、ここで効率が非常に重要です。)

答えて

6

正確なパフォーマンスはわかりませんが、 firstobsとobsオプションを試してみてください。ファイルの途中からレコードの範囲を読み取ることができます。

data test; 
infile 'D:\test\T201.bin' lrecl=12 recfm=f firstobs=42000 obs=44000; 
input time IB4. v1 IB4. v2 IB4. ; 
run; 
+0

ありがとうございました。私はちょうどいくつかのテストを実行しました。このアプローチは、私がやっていたよりもはるかに高速です。 – itzy

+0

これは最も効果的なアプローチであると確信しており、これを答えとして選択する必要があります。 –

関連する問題