2012-02-04 2 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 options. Это позволит считывать диапазон записей из середины файла.

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

Я уверен, что это самый эффективный подход, и вы должны выбрать это как ответ. –