如何在SAS中正确使用SCAN功能

时间:2019-06-19 21:48:57

标签: sas

我在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 :(得分:0)

假设路径是用-分隔的位置列表,您要在路径中提取非位置之前的位置。

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;