美文网首页
SAS编程:如何获取字符串中最后一个字符?

SAS编程:如何获取字符串中最后一个字符?

作者: 野藤_ | 来源:发表于2021-12-10 11:48 被阅读0次

    最近生成一个ADaM的PARAM/PARAMCD遇到了一点问题。

    对于Param系列变量的生成,一般我们在会提前在ADaM_VLM Spec中提前设置好每一个SDTM中--TESTCD对应的Param等变量,直接Spec导入SAS数据集,与整理好的数据以--TESTCD为关键变量,拼接获取Param变量。

    Spec都是提前根据DM提供的数据说明写好的,我们发现,这一次数据有几个检测缩写与说明上不同,主要是CD值得后缀数字不同。由于我们一个Product的项目共用一个SPEC,所以,不方便直接修改为一个项目直接修改SPEC。我们需要手动根据--TETCD的最后一个数字进行判断。于是,接下来的问题就是如何获取字符变量最后一个字符值。

    SUBSTR

    提取字符变量中的部分字符,需要用到SUBSTR函数,这个函数有3个参数:SUBSTR(string, position, <,length>)

    1. string: 指定具体的字符内容,可以是字符串、字符变量或字符表达式,值不能为空。
    2. position: 指定截取开始的位置,取值为正整数,且值不能超过字符的最大长度,值不能为空。
    3. length: 指定截取的长度;这个变量为空时,会提取从position开始到末尾的字符;变量值为0、负值或大于字符剩余长度时,SAS Log会报错。

    如何提取最后一个字符?

    方法1

    假设字符串为ABCD,提取最后一位字符只需要从第4位开始,提取一位就可以实现。SAS代码如下:

    data tmp1;
      a = "ABCD";
      b = substr(a, 4, 1);
    run;
    

    但是实际应用时有个问题,我们无法提前确定好字符串的长度,这也就无法确定提取开始的位置。这时候需要使用LENGTH函数来提供字符变量的长度,这个长度也就是最后一个字符的位置,这样就可以提取未知长度的字符值的最后一个字符。

    data tmp2;
      a = "ABCD";
      b = substr(a, length(a), 1);
    run;
    

    这个方法,还可以延伸,例如,提取字符值的最后2个字符,起始位置就可以设置为length(a)-1;提取最后3个字符,起始位置就是length(a)-2……以此类推,提取最后n个字符,起始位置就是length(a)-(n-1)

    方法2

    字符值的最后一个字符,等价于字符值翻转之后第一个字符。将字符值翻转后,之前最后一个字符就排在第一位,就不需要救助字符值长度来确定字符位置。实现字符串翻转的函数的是reverse

    data tmp3;
      a = "ABCD";
      b =substr(reverse(a), 1, 1);
    run;
    

    以上就是SAS中获取字符串中最后一个字符的2种方法。

    感谢阅读!若有疑问,欢迎评论区交流!

    相关文章

      网友评论

          本文标题:SAS编程:如何获取字符串中最后一个字符?

          本文链接:https://www.haomeiwen.com/subject/nokcfrtx.html