【问题标题】:SAS compress: keep numbers before |SAS 压缩:保留数字之前 |
【发布时间】:2016-05-06 21:32:51
【问题描述】:

所以我的一个变量被编码成数字值、文本、括号等的混乱组合。我实际上只需要提取记录为 12345 的数值(例如,不限于特定位数,我的意思是它可以是 n-k-digit 到 n-digit)后跟 ||然后描述可能也包含一些数值。因此,当我应用 SAS 压缩函数 newvar = compress(oldvar, '', 'a') 时,newvar 从 oldvar 中提取了所有数字。因此它看起来像 12345|||(789)||等'|'的数量符号(表示换行符等的控制字符?)虽然有所不同。

我只需要提取'|'之前的第一个数值符号。请问有什么帮助吗? 提前致谢。

【问题讨论】:

  • 您应该发布示例数据并说明您拥有什么、想要什么以及尝试过什么。基于分隔符解析文本的函数应该是SCAN(),但我不确定我是否理解你的问题。

标签: sas compression


【解决方案1】:

使用 SCAN() 函数提取值。它将产生一个字符值,并且转换为数字应该很简单。

new_var = input(scan(old_var, 1, "|"), best12.);

【讨论】:

    【解决方案2】:

    应该这样做:

    substr("12345||45||89||...",1,find("|","12345||45||89||...",1)-1)
    

    【讨论】:

    • 嗨@Gaurav-taneja,感谢您的建议。如果我理解正确,SAS 代码应该是这样的: new_var=substr(newvar,1,find("|",newvar,1)-1) 对吧?我试过了,但没有用:(
    猜你喜欢
    • 2013-06-12
    • 2013-10-09
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    相关资源
    最近更新 更多