SAS ...有一个包含两行数据的字符串,试图仅获取第二行

时间:2018-12-04 17:37:50

标签: split sas

我从导入SAS的另一个数据库中获得了一滴数据。数据块有多行以标记开头。我能够编写一段代码来查找每个标签并将它们附加到表列中。问题是,其中一个标签包含多行数据(由回车/换行分隔),我不在乎第一行。我只想将第二行数据添加到表列中(下面的示例:NADR :)。有人可以告诉我如何修改此代码行以仅查找第二行吗?

示例:

:NADR:SE12345

高级自动

:DF1:10/7/2018

代码:

大小写当find(t1.Blob,“:NADR:”)> 0时,Strip(Substr(Substr(t1.Blob,find(t1.Blob,“:NADR:”)+ 6,300),1,find( Substr(t1.Blob,find(t1.Blob,“:NADR:”)+ 6,300),“:”)-1))以名称结尾

谢谢。

2 个答案:

答案 0 :(得分:0)

也许您可以分别导入每一行,然后仅删除不需要标签的行。例如:

if find(t1.Blob,":NADR:") > 0 then delete;

带有“ Advanced Auto”的行是它自己的记录。除非有关您的数据结构的其他规定不允许这样做。

答案 1 :(得分:0)

使用scan功能获取部分文本。此示例演示了如何使用两个不同的十六进制字符(即cr和lf)作为部分定界符。

part2 = scan(blob,2,'0a0d'x);

默认行为是将文本中任何顺序的连续定界符视为单个定界符。 m的第四个参数(上面未使用)中的scan修饰符可以更改该行为。