Как правильно использовать функцию SCAN в SAS - PullRequest
0 голосов
/ 20 июня 2019

У меня есть два столбца в SAS, в которых перечислены данные, как показано ниже:

|--------act_route_path --------| Off_At_Loc |-------Misroute_Loc

HOU-FTW-AMA-AQE-FMT  |-----   AMA-----|---------- ?????

Я создаю новый столбец Misroute_Loc, в котором я хочу заполнить столбец Off_At_Loc.Я пытаюсь использовать функцию SCAN для достижения этой цели, но безуспешно.В приведенном выше примере я хочу, чтобы вывод в Misroute_Loc был FTW.

Код, который я использую, выглядит следующим образом:

Misroute_Loc=scan(act_route_path,Greater,-4,3);

В большем столбце указывается позиция, с которой начинается AMA(Off_At_Loc).

Я могу запустить приведенный выше код, однако он не откатывает FTW, как я хочу.

1 Ответ

0 голосов
/ 20 июня 2019

Предположим, что путь - это список мест с разделителями, и вы хотите извлечь место в пути перед отключенным местом.

data want;

  path = 'HOU-FTW-AMA-AQE-FMT';
  off = 'AMA';

  * find the off place (as a word);
  p = indexw(path, trim(off), '-');

  * scan backwards one word from path part up to the off place;
  if p > 2 then before_off = scan(substr(1,path,p-2), -1, '-');
run;
...