Данные импорта 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;