這樣做的簡單方法是通過使用@@和分隔符作爲'['讀取來生成鍵值對。在使用proc轉置生成鍵值對之後,您可以生成完全相同的結果。這樣,如果未來增加了更多屬性值對,代碼仍然能夠完美地生成結果。檢查下面的代碼。
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正則表達式來打破關鍵值對中的屬性/值。您也可以考慮將屬性/值分解爲鍵值對。
如果您爲自己的問題付出更多努力,尤其是顯示迄今爲止已嘗試過的代碼,或者已經完成的研究,則更有可能得到有用的答案。 – 2015-04-03 15:40:33
如果您的文件最初是JSON,XML或HTML數據,這將有助於指出,還有其他方法可以讀取此類文件。 – Reeza 2015-04-03 17:09:40