我的原始數據中提取數值爲形式使用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