通过删除最后几个字符来修改sas中的股票代码列表

时间:2014-09-21 00:42:10

标签: sas finance

我有一长串的时间序列价格数据,按股票代码排序,然后按日期排序。我想删除每个自动收报机上的最后四个字符。假设股票代码是AAA.ASX,我想最终只有AAA来匹配并与另一个数据集合并。

到目前为止,我已尝试编码:

asx=tranwrd(asx,".asx",""); put asx; run;

任何建议都会受到赞赏,因为我只是深入了解这个问题。

2 个答案:

答案 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,查看其他一些字符串操作函数(如substrindex)也值得您花些时间,因为它有多种工具可供选择。< / p>

答案 1 :(得分:0)

scan可能是您最好的选择,如果它始终是第一个“#{0;以点分隔。

ticker_short = scan(ticker_long,1,'.'); *second argument is which word you want, third optional is which delimiter;