Данные импорта sas, заключенные в {}, разделенные символом;

У меня есть CSV-файл, разделенный точкой с запятой, но у меня есть поле с точкой с запятой внутри. Это ограничено {}.

Пример поля (его название "окрестности") будет:

{"T": 0, "N": "jardim Atlantico", "I": 0}

Но в некоторых строках я мог бы иметь:

{"T": 0, "I": 0, "N": "JD"; "Sorocaba parque"}

Поэтому, когда я бегу

proc import 
    datafile='D:\nnl_muest_result_bs.csv'
     dbms=dlm
    out=muest_Re.I03_nnl_result_bs;
     delimiter=';';
    guessingrows=32767;
run;

Он разделяется точкой с запятой, что нормально для остальных полей, но не в этом.

Как я могу сказать SAS разделить, используя точку с запятой, но игнорировать эти внутри фигурных скобок {}??

Спасибо

1 ответ

Решение

Я не нашел ничего полезного с помощью import proc, но вы можете решить проблему с помощью более ручного подхода. Я создал несколько тестовых данных:

a;b;n{c;d}e;g
aa;bb;mm{cc;dd;ee}ff;h

и вот код, где закомментированная часть должна быть изменена в соответствии с вашими переменными, как длина record (и вам может понадобиться добавить lrecl= и firstobs=2 в оператор infile)

data test;
infile "C:\Dati\EsempiSAS\graffe.txt" pad missover;
input @1 record $CHAR100.;
piece1=substr(record,1,indexc(record,"{")-1);
piece2=substr(record,indexc(record,"{")+1,(indexc(record,"}"))-(indexc(record,"{")+1));
piece3=substr(record,indexc(record,"}")+1);
/*
var1=scan(piece1,1,";");
var2=scan(piece1,2,";");
var3=scan(piece1,3,";");
var4=piece2;
var5=scan(piece3,1,";");
var6=scan(piece3,2,";");
*/
run;
Другие вопросы по тегам