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