如何将以下字符串(多个分隔符)拆分为SAS中的单独列?
[截获] -2 [/截获] [国家]我的[/ COUNTRY] [LOG_AMT] 0.2354 [/ LOG_AMT] [BETAX] -11.08325 [/ BETAX]
> INTERCEPT COUNTRY LOG_AMT BETAX
> -2 MY 0.2354 -11.08325
答案 0 :(得分:2)
这样做的简单方法是使用@@和分隔符作为' ['来生成密钥值对。使用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正则表达式来破坏键值对中的属性/值。您也可以将属性/值分解为键值对。