我的原始数据中提取数值为形式使用SAS
Var
12 A+
14 A+
AB+ 19
AB:20
20
25
27 New
我只想提取它的数字部分。
任何人都可以请帮助我如何在sas中处理这些数据。
预先感谢您。 RGDS。
我的原始数据中提取数值为形式使用SAS
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.);
我会使用内置于SAS的正则表达式函数。首先将整行读入为字符变量,然后使用prxmatch
或其他正则表达式函数之一来使用\d
通配符仅提取数字组件。
正如@itzy上面提到的,Perl的正则表达式会做轻松:
var2=prxchange("s/[^0-9]//",-1,var);
这将删除所有非数字字符。 在本声明中,'s /'开始一个字符串,[^ 0-9]表示所有非数字字符。 -1定义了一个直到结束匹配。
一种变化是在另一个压缩函数中使用嵌入压缩函数,其中嵌入压缩函数删除所有差异,并将其用作第二个压缩函数的修改器(删除除这些数字以外的所有字符)。例如: var2 = compress(var ,, compress(var ,,“d”)); – RWill 2012-03-01 01:14:41
RWill - 这是一个很好的解决方案。我已经更新了答案。 – DavB 2012-03-01 07:44:09
更简单的方法是添加“k”修饰符,该修饰符保持列出的字符而不是删除它们。所以代码如下所示:var2 = input(compress(var ,,“kd”),best。); – Longfish 2012-03-01 11:16:03