2015-04-03 4 views
-3

Как разбить нижнюю строку (несколько разделителей) на отдельные столбцы в SAS?разделительная строка с несколькими метриками в SAS

[INTERCEPT] -2 [/ INTERCEPT] [СТРАНА] MY [/ СТРАНА] [LOG_AMT] 0,2354 [/ LOG_AMT] [Betax] -11,08325 [/ Betax]

> INTERCEPT COUNTRY LOG_AMT  BETAX 
> -2   MY  0.2354 -11.08325 
+2

Вы, скорее всего, получите полезный ответ, если приложите немного усилий к своему вопросу, особенно показывая код, который вы пробовали до сих пор, или исследование, которое вы сделали. –

+0

Если ваш файл изначально является JSON, XML или HTML-данными, это поможет указать, что есть другие методы для чтения такого файла. – Reeza

ответ

2

Простым способом сделать это будет генерация пары ключевых значений путем чтения с использованием @@ и разделителя как «[». После того, как пара значений ключа создается с помощью 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 для нарушения свойств/значений в паре значений ключа. Вы можете также изучить возможность разбиения свойств/стоимости на пару значений ключа.

Смежные вопросы