我的原始数据采用格式
Var
12 A+
14 A+
AB+ 19
AB:20
20
25
27 New
我只想提取它的数字部分。
有人能帮我如何在sas中处理这些数据吗。
提前谢谢。Rgds。
您可以使用COMPRESS函数,其形式为
COMPRESS(<source><, chars><, modifiers>)
更新:实现这一点有很多方法。根据他们的评论,RWill和Keith提供了最佳解决方案:
var2=input(compress(var,compress(var,,"d")),best.);
甚至更好:
var2=input(compress(var,,"kd"),best.);
正如上面提到的@itzy,Perl正则表达式将很容易做到:
var2=prxchange("s/[^0-9]//",-1,var);
这将删除所有非数字字符。在该语句中,"s/"以字符串开头,[^0-9]表示所有非数字字符-1定义了一个直到结束的匹配。
我会使用SAS内置的正则表达式函数。首先,将整行作为字符变量读取,然后使用prxmatch
或其他正则表达式函数之一,使用d
通配符仅提取数字分量。