我有一长串的时间序列价格数据,按股票代码排序,然后按日期排序。我想删除每个自动收报机上的最后四个字符。假设股票代码是AAA.ASX,我想最终只有AAA来匹配并与另一个数据集合并。
到目前为止,我已尝试编码:
asx=tranwrd(asx,".asx","");
put asx;
run;
任何建议都会受到赞赏,因为我只是深入了解这个问题。
答案 0 :(得分:1)
为了稍微扩展Joe的答案,scan
包含.
作为其中一个标准分隔符,因此第三个参数并非绝对必要(但它是'好的做法要明确)。
data tmp;
asx = "abc.def";
/* Return the first word, when seperated by . */
asx1 = scan(asx, 1, ".");
put asx1=;
/* Return the first word, when seperated by standard delimiters _ -,."' etc. */
asx2 = scan(asx, 1);
put asx2=;
/* Return only the first 3 characters (if you know it will always be 3 long) */
asx3 = substr(asx, 1, 3);
put asx3=;
/* Return the substring from position 1 to the first occourance of . */
asx4 = substr(asx, 1, index(asx, ".") - 1);
put asx4=;
run;
作为您的学习型SAS,查看其他一些字符串操作函数(如substr
和index
)也值得您花些时间,因为它有多种工具可供选择。< / p>
答案 1 :(得分:0)
scan
可能是您最好的选择,如果它始终是第一个“#{0;以点分隔。
ticker_short = scan(ticker_long,1,'.'); *second argument is which word you want, third optional is which delimiter;