子串化SAS中数字变量的最后一位数字

时间:2018-05-18 16:45:20

标签: sas

我在SAS中有一个数字变量,我很难提取它的最后一位数字。我尝试使用substr,但它只处理char个变量。我有时变量有3或4位数。

实施例

1234
 237
 754
9000

在这些情况下,我需要提取

34
37
54
00

并将它们存储为新的数字变量。我在proc sql语句中尝试了下面的代码,但它返回并出错。有人能帮助我吗?

 Var2 =   input(substr(put(var1), 1, length(put(var1))-1), 8.)

3 个答案:

答案 0 :(得分:5)

SUBSTRN()适用于数字变量,但在这种情况下它不能很好地工作,因为没有简单的方法来指定最后两个字符。 MOD()函数在这种情况下效果很好,因为你基本上找到了100的余数。因为它看起来像你想要的字符,你需要使用PUT()将它转换为也是一个字符,Z2格式保持0和前导零。

want = put(mod(value, 100), z2.);

答案 1 :(得分:0)

另一种方法是使用prxchange,如下所示

do{
    kategoriak.forEach(elem => {
        elem.child.forEach(child => {
            kategoriak.forEach(ell => {
                if(child === ell.id && elem.szint !== 0){
                    ell.szint = elem.szint + 1
                }
            })
        })
    })
} while(
    () => {
      kategoriak.forEach(elem => {
          if(elem.szint === 0){
              return true
          }
      })
      return false
    }
)

答案 2 :(得分:0)

您也可以使用reverse和substr函数,如下所示,然后使用z2。格式。

input(reverse(substr(reverse(strip(put(var1,best.))), 1,2)), 8.);