Оба COUNT () и COUNTC () будут работать.
ntabs1=count(_infile_,'09'x);
ntabs2=countc(_infile_,'09'x);
Чтобы надеяться на исправление файла, вам понадобится одна из двух вещей.
Сначала дополнительные вкладки могли быть экранированы, если им предшествовал обратный слеш.Просто посмотрите на одну из плохих строк и решите, сделали ли они это.Вы можете использовать функцию TRANWRD()
, чтобы заменить любую обратную косую черту + вкладку другим символом, например pipe.
data want;
infile "input_file" dsd dlm='09'x truncover ;
input @;
_infile_=tranwrd(_infile_,'\'||'09'x,'|');
input .... ;
run;
Во-вторых, если вы уверены, что есть только один столбец, который может содержать дополнительные вкладки, просто очиститеот значений до и после этого столбца, и все, что осталось, является значением этого столбца.
Если ни одно из этих значений не является истинным, то вам может потребоваться вручную отредактировать строки с дополнительными вкладками.Вы можете исправить это, изменив встроенные вкладки на другие символы или добавив кавычки вокруг значений со встроенными вкладками.Вы можете использовать результат функции COUNTC (), чтобы указать, какие строки нужно редактировать.Например, если должно быть 11 полей (то есть 10 вкладок), то такая программа разделит файл на две части.
data _null_;
infile "input_file";
input;
if countc(_infile_,'09'x)=10 then file "good_file";
else file "bad_file";
put _infile_;
run;