Подстрока последних цифр числовой переменной в SAS - PullRequest
0 голосов
/ 18 мая 2018

У меня есть числовая переменная в SAS, и я изо всех сил пытаюсь извлечь ее последние цифры.Я попытался использовать substr, но он обрабатывает только char переменные.Иногда у меня есть 3 или 4 цифры.

Пример

1234
 237
 754
9000

В этих случаях мне нужно извлечь

34
37
54
00

и сохранить их как новый числовойпеременная.Я попробовал приведенный ниже код в операторе proc sql, но он возвращает ошибку.Кто-нибудь может мне помочь?

 Var2 =   input(substr(put(var1), 1, length(put(var1))-1), 8.)

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

еще один способ - использовать prxchange, как показано ниже

data have;
input val1;
val2=  input(prxchange('s/^(.*)(\d{2})$/$2/', -1, trim(put(val1,8.))),best.);
format val2 z2.;
datalines;
1234
237
754
9000
40
;
0 голосов
/ 19 мая 2018

Вы также можете использовать функции reverse и substr следующим образом, а затем использовать z2.формат.

input(reverse(substr(reverse(strip(put(var1,best.))), 1,2)), 8.);
0 голосов
/ 18 мая 2018

SUBSTRN() работает с числовыми переменными, но в этом случае работает не очень хорошо, потому что нет простого способа указать только последние два символа.Функция MOD() хорошо работает в этом случае, потому что вы, по сути, находите остаток от 100. Поскольку это выглядит так, как будто это символ, который вы хотите, вам нужно использовать PUT (), чтобы также преобразовать его в символ, сФормат Z2 для хранения 0 и лидирующих нулей.

want = put(mod(value, 100), z2.);
...