Простым способом сделать это будет генерация пары ключевых значений путем чтения с использованием @@ и разделителя как «[». После того, как пара значений ключа создается с помощью proc transpose, вы можете сгенерировать точно такой же результат. Таким образом, если в будущем добавится пара свойств-значений, код все равно сможет сгенерировать результат. Проверьте код ниже.
data have;
length key value $ 20.;
retain key ' ';
retain group 1;
infile datalines dlm=']' ;
input text :$char20. @@;
key=lag(text);
if find(text,'[/') then do;
key=scan(key,2,'[','mo');
value=scan(text,1,'[');
output;
end;
drop text;
datalines;
[INTERCEPT]-2[/INTERCEPT] [COUNTRY]MY[/COUNTRY] [LOG_AMT]0.2354[/LOG_AMT] [BETAX]-11.08325[/BETAX]
;;;;
run;
proc transpose data=have out=want(drop=group _name_);
by group;
var value;
id key;
idlabel key;
run;
proc print data=want;run;
Лично я предпочитаю использовать регулярное выражение sas perl для нарушения свойств/значений в паре значений ключа. Вы можете также изучить возможность разбиения свойств/стоимости на пару значений ключа.
Вы, скорее всего, получите полезный ответ, если приложите немного усилий к своему вопросу, особенно показывая код, который вы пробовали до сих пор, или исследование, которое вы сделали. –
Если ваш файл изначально является JSON, XML или HTML-данными, это поможет указать, что есть другие методы для чтения такого файла. – Reeza