在SAS中将变量拆分为多个

时间:2017-12-07 11:22:35

标签: sas

我想知道是否可以将变量拆分为多个变量。我有一个很大的变量,我想分成多个列。

"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"

1 个答案:

答案 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等......