импортировать файл .txt в SAS

Я пытаюсь импортировать текстовый файл в формате sas. Данные, как показано ниже:

AccNumber            Name                     Date of Birth          Type                     City                     Score                
1211111111           Mmmmm Ggggg             01-Dec-1989              Base                     Nanded                   111                      
7222222222           Rannnn Sssss            14-Jan-1989              Silver                   mumbai                     222   

FILENAME REFFILE '/folders/myshortcuts/MyFolder/AccountChar.txt';
PROC IMPORT DATAFILE=REFFILE
DBMS=csv
OUT=WORK.IMPORT2;
GETNAMES=YES;
delimiter='09'x;
RUN;
PROC CONTENTS DATA=WORK.IMPORT2; RUN;

Но после импорта я получил набор данных со 107 столбцами, и только столбец Номер счета показывает правильные данные.

Нужна помощь.

Вывод журнала:
ПРИМЕЧАНИЕ. 296 записей были прочитаны из файла REFFILE. Минимальная длина записи была 128. Максимальная длина записи - 150. ПРИМЕЧАНИЕ. Набор данных WORK.IMPORT5 содержит 296 наблюдений и 1 переменную. ПРИМЕЧАНИЕ. Используется оператор DATA (общее время процесса): в реальном времени 0,01 секунды, время процессора 0,00 секунды. 296 строк, созданных в WORK.IMPORT5 из REFFILE.

ПРИМЕЧАНИЕ. Набор данных WORK.IMPORT5 был успешно создан. ПРИМЕЧАНИЕ. Набор данных WORK.IMPORT5 содержит 296 наблюдений и 1 переменную. ПРИМЕЧАНИЕ: Используется ПРОЦЕДУРА ИМПОРТА (Общее время процесса): в реальном времени 0,14 секунды, время ЦП 0,13 секунды СОДЕРЖАНИЕ ПРОЦЕССА ДАННЫЕ = РАБОТА.ИМПОРТ5; ЗАПУСТИТЬ;


sas
person GNH    schedule 29.07.2017    source источник
comment
Вам нужно показать, что на самом деле находится в вашем текстовом файле. Выполните простой шаг с данными для проверки. data _null_; infile '/folders/myshortcuts/MyFolder/AccountChar.txt' obs=2; input; list; run;   -  person Tom    schedule 29.07.2017
comment
вывод: ПРАВИЛО: ---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + - --- 5 ---- + ---- 6 ---- + ---- 7 ---- + ---- 8 ---- + ---- 9 ---- + - --- 0 1 AccountNumber Имя Дата рождения Тип 101 Город FicoScore 150 2 9281332154 Mishti Gupta 01 декабря 1989 г. База 101 Nashik 757150 ПРИМЕЧАНИЕ: 2 записи были прочитаны из файла '/folders/myshortcuts/MyFolder/AccountChar.txt' .   -  person GNH    schedule 29.07.2017
comment
Измените GUESSINGROWS на большее число, например, 10000. ИМПОРТ ПРОЦЕССА - это процедура предположения, если он не работает с большим числом, отправьте ЖУРНАЛ на свой вопрос через РЕДАКТИРОВАНИЕ.   -  person Reeza    schedule 29.07.2017
comment
Похоже, в вашем файле данных НЕ используются табуляции или запятая в качестве разделителя, а вместо этого есть просто пробелы. Если значения не указаны в фиксированных столбцах, встроенные пробелы в таких полях, как CITY, сделают файл нечитаемым.   -  person Tom    schedule 29.07.2017


Ответы (2)


Судя по опубликованному вами образцу и комментариям, похоже, что ваш файл НЕ является файлом с разделителями, но в нем есть данные в фиксированных расположениях столбцов. Просто выясните, где в строке находится каждый столбец, и прочитайте его напрямую, используя шаг данных. Что-то вроде этого:

data WORK.IMPORT2;
  infile '/folders/myshortcuts/MyFolder/AccountChar.txt' firstobs=2 truncover;
  input
    AccountNumber $ 1-25
    Name $ 26-50
    @51 Date_of_Birth date11.
    Type $ 74-98
    City $ 99-123
    Fica 124-130
  ;
  format date_of_birth date9. ;
run;
person Tom    schedule 29.07.2017
comment
да. Это не файл с разделителями табуляции. Импортирован успешно с использованием предложенных вами шагов. спасибо за ваш вклад. - person GNH; 29.07.2017

Вы предоставляете параметр разделителя '09'x (табуляция), который игнорируется, поскольку для ваших dbms установлено значение csv.

Пытаться:

FILENAME REFFILE '/folders/myshortcuts/MyFolder/AccountChar.txt';
PROC IMPORT DATAFILE=REFFILE
DBMS=dlm  /* use delimiter option */
OUT=WORK.IMPORT2;
GETNAMES=YES;
delimiter='09'x;
RUN;
PROC CONTENTS DATA=WORK.IMPORT2; RUN;

Дополнительную информацию см. В документации .

person Allan Bowe    schedule 29.07.2017
comment
спасибо за ваш вклад. обновление dbms = dlm сработало. но мой входной файл содержит 6 столбцов, а в наборе данных я получил только 1 переменную. есть ли возможность сохранить данные в 6 столбцах, а не в 1? - person GNH; 29.07.2017
comment
какой был вывод вашего журнала? как упоминает @reeza, обновите свой вопрос, отредактировав его. - person Allan Bowe; 29.07.2017