Мой PROC IMPORT шаг бросает «import unsuccessful», когда я пытаюсь прочитать файл с разделителем «~», содержащий поле адреса. В CSV-файле 5-байтовый почтовый индекс автоматически обрабатывается как числовое поле, и время от времени я получаю плохие записи данных с недопустимыми почтовыми индексами как VXR1 @. Когда это встречается, я получаю ошибку «import unsuccessful» и сбой в работе SAS. PROC IMPORT автоматически преобразуется в шаг DATA с помощью infile. Поэтому я попробовал шаг DATA с опцией INFILE и с INFORMATS и FORMATS и изменил FORMAT ZIP на буквенно-цифровой. Но сейчас я столкнулся с другой проблемой. С ключевыми словами DATA, INFORMAT и FORMAT происходит несоответствие длин, и данные автоматически перемещаются в разные местоположения. Может ли кто-нибудь помочь мне разобраться в решении этой проблемы?SAS PROC Import vs DATA шаг с INFILE
Включена PROC ИМПОРТА я и файл DATA шаг, который я использовал ниже для справки:
data WORK.TRADER_STATS ;
%let _EFIERR_ = 0; /* set the ERROR detection macro variable */
infile '/sascode/test/TRADER_STATS.csv' delimiter = '~' MISSOVER DSD lrecl=32767 firstobs=2 ;
informat TRADER_id best32. ;
informat dealer_ids $60. ;
informat dealer_name $27. ;
informat dealer_city $15. ;
informat dealer_st $2. ;
informat dealer_zip $5. ;
informat SNO best32. ;
informat start_dt yymmdd10. ;
informat end_dt yymmdd10. ;
input
TRADER_id
dealer_ids $
dealer_name $
dealer_city $
dealer_st $
dealer_zip
sno
start_dt
end_dt
;
if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
run;
proc import file="/sascode/test/TRADER_STATS_BY_DAY.csv" out=WORK.TRADER_STATS_BY_DAY
dbms=dlm replace;
delimiter='~';
;run;
может быть, вы можете использовать 'GUESSINGROWS = n' где п является достаточно большим для SAS, чтобы найти ZIP код с буквами, так SAS получит правильный тип данных. Есть ли шанс поделиться своими данными? – mucio
Попробуйте добавить знак $ после слова dealer_zip в инструкции ввода, хотя это не имеет значения. Кроме того, измените неверное на перевод. – Reeza