Извлечь числовое значение с помощью SAS - PullRequest
2 голосов
/ 29 февраля 2012

Мои необработанные данные имеют вид

Var
12 A+
14 A+
AB+ 19
AB:20
20
25
27 New

Я хочу извлечь только их числовую часть.

Может кто-нибудь, пожалуйста, помогите мне, как обработать эти данные в SAS.

Заранее спасибо.Rgds.

Ответы [ 3 ]

6 голосов
/ 29 февраля 2012

Вы можете использовать функцию COMPRESS, которая принимает форму

COMPRESS(<source><, chars><, modifiers>)

Обновление: Есть много способов достичь этого. Согласно их комментариям, RWill и Кит предоставляют лучшие решения:

var2=input(compress(var,compress(var,,"d")),best.);

или даже лучше:

var2=input(compress(var,,"kd"),best.);
3 голосов
/ 01 марта 2012

Как и @itzy, упомянутый выше, регулярное выражение Perl будет делать с легкостью:

  var2=prxchange("s/[^0-9]//",-1,var);

Это удалит все нечисловые символы.В этом утверждении 's /' начинает строку, [^ 0-9] означает все нечисловые символы.-1 определяет совпадение до конца.

0 голосов
/ 29 февраля 2012

Я бы использовал функцию регулярного выражения, встроенную в SAS.Начните с чтения всей строки как символьной переменной, а затем используйте prxmatch или одну из других функций регулярного выражения, чтобы извлечь только числовой компонент с использованием подстановочного знака \d.

...