ненужные значения подряд (sas) - PullRequest
1 голос
/ 28 ноября 2011

У меня есть данные в файле .txt, разделенном запятыми. Я пишу регулярные операторы infile для импорта этого файла в набор данных sas. Данные составляют около 2,5 миллионов строк. Однако в 37314-й строке и во многих других строках у меня есть ненужные значения. SAS импортирует строки только на строку выше строк нежелательных значений, и поэтому я получаю не набор данных со всеми 2,5 миллионами строк, а с 37314 строками. Я хочу написать код, который при написании этого infile заботится об этих ненужных строках и либо не принимает их, либо удаляет их. В общем, мне нужны все 2,5 миллиона строк, которые я не могу получить из-за промежуточных строк.

любая помощь будет оценена.

Ответы [ 2 ]

4 голосов
/ 28 ноября 2011

Вы можете прочитать всю строку во входном буфере, используя только оператор

 Input; 

.Затем вы можете анализировать поля по отдельности, используя переменную

_infile_

.

Пример:

data _null_;
 infile datalines firstobs=2;
 input;
  city = scan(_infile_, 1, ' ');
  char_min = scan(_infile_, 3, ' ');
  char_min = substr(char_min, 2, length(char_min)-2);
  minutes = input(char_min, BEST12.);
 put city= minutes=;
 datalines;
  City Number Minutes Charge
  Jackson 415-555-2384 <25> <2.45>
  Jefferson 813-555-2356 <15> <1.62>
  Joliet 913-555-3223 <65> <10.32>
  ;
run;

Работа с данными во входном буфере.

2 голосов
/ 28 ноября 2011

Вы также можете использовать? а также ?? модификаторы для оператора ввода, чтобы «игнорировать» любые проблемные строки.

Вот ссылка на документ . Смотрите под заголовком «Модификаторы формата для отчетов об ошибках».

Пример:

data x;
  format my_num best.;
  input my_num ?? ;

  **
  ** POSSIBLE ERROR HANDLING HERE:
  *;
  if my_num ne . then do;
    output;
  end;

datalines;
a
;
run;
...