我想知道是否可以将变量拆分为多个变量。我有一个很大的变量,我想分成多个列。
"0060175052";"Three Chords and the Truth: Hope, Heartbreak, and Changing Fortunes in Nashville";"Laurence Leamer";"1997","Harpercollins"
我想将它分成分号所在的位置。所以:
v1 = "0060175052"
v2 = "Three Chords and the Truth: Hope, Heartbreak, and Changing Fortunes in
Nashville"
v3 = "Laurence Leamer"
v4 = "1997"
v5 = "Harpercollins"
答案 0 :(得分:1)
索菲:
如何拆分价值取决于它的来源。
对于使用INPUT语句读取文本文件的情况,请在INFILE语句中指明分隔符,例如:
INFILE *input-file* DSD DLM=';';
对于现有数据集中变量的情况,SCAN函数可以提取字符串的不同部分。
v1 = SCAN (big_variable, 1, ';');
...
v5 = SCAN (big_variable, 5, ';');
如果大变量值可以包含指示空白值的连续分号,则需要在modifiers参数中使用M修饰符。例如:
v1 = SCAN (big_variable, 1, ';', 'M');
对于只有五个部分,您可能不需要进行数组处理。如果字符串有许多要拆分的部分,则使用数组来减少编码重复:
attrib v1-v20 length=$200;
array v v1-v20;
do index = 1 to dim(v);
v(index) = SCAN (big_variable, index, ';');
end;
更先进的扫描技术将使用Perl正则表达式,由SAS PRX *调用例程和函数表示 - 例如PRXPARSE,PRXMATCH,PRXNEXT等......