SAS ... есть строка с двумя строками данных, пытающаяся получить только вторую строку - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть блок данных из другой базы данных, который я импортировал в SAS.Большой блок данных имеет несколько строк, которые начинаются с тегов.Я могу написать кусок кода для поиска каждого тега и добавить их в столбец таблицы.Проблема в том, что один из тегов содержит несколько строк данных (разделенных переводом каретки / переводом строки), и мне плевать на первую строку.Я только хочу, чтобы вторая строка данных была добавлена ​​в столбец таблицы (пример ниже: NADR :).Может кто-нибудь сказать мне, как изменить эту строку кода, чтобы искать только вторую строку?

Пример:

: NADR: SE12345

ADVANCEDAUTO

: DF1: 07.10.2008

Код:

Случай, когда найти (t1.Blob, ": NADR:")>0 затем Strip (Substr (Substr (t1.Blob, find (t1.Blob, ": NADR:") + 6300), 1, find (Substr (t1.Blob, find (t1.Blob, ": NADR:")+6,300), ":") - 1)) Конец имени

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Используйте функцию scan для захвата частей текста.В этом примере показано использование двух разных шестнадцатеричных символов (эти cr & lf) в качестве разделителей частей.

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

Поведение по умолчанию состоит в том, что последовательные разделители в тексте в любом порядке считаются одним разделителем.Модификатор m в четвертом аргументе (не используется выше) scan может изменить это поведение.

0 голосов
/ 04 декабря 2018

Возможно, вы можете импортировать каждую строку отдельно, а затем просто удалить строки с тегами, которые вам не нужны.Например:

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

А строка с «Advanced Auto» является собственной записью.Если что-то другое в вашей структуре данных не позволяет этого.

...