我在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。
答案 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;