Как изолировать выбранные цифры от цифровой клавиши в зависимости от условий? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь извлечь идентификатор страны из числового ключа продукта, который имеет 2 типа:

Для SAS EG 7.1 1. 7-8-значный ключ с первыми 2-3 цифрами, обозначающими идентификатор страны. т.е. для США с кодом страны 36, ключ продукта = 36XXXXX

Для Индии с кодом страны 121, ключ продукта = 121XXXXX

  1. 13-значный ключ с 2-й, 3-й, 4-й цифрой, обозначающей идентификатор страны то есть для США, ключ продукта = X036XXXXXXXXX

Для IN, ключ продукта = X121XXXXXXXXX

Используя следующий код, чтобы получить это:

data want;
set have;
if length(key)>8 THEN COUNTRY_ID=substr(key), 2,3);
else COUNTRY_ID=substr(key,1,length(key)-5);
run;

Работает для 1-го типа с 7-8-значным ключом продукта, но не для более длинных 13-значных ключей. Показывает десятичное число в идентификаторе страны то есть для США, X036XXXX, тогда как должно быть только 36.

Нужно ли менять тип данных ??

1 Ответ

0 голосов
/ 16 апреля 2019

Вы должны включить некоторые примеры данных, чтобы ваш вопрос точно показывал, с какой проблемой вы столкнулись и что вы ожидаете, но я думаю все, что вам нужно, - это преобразовать country_id в числовое значение.:

country_id = input(substr(key, 2, 3), best.);

Ваш текущий код буквально берет три символа '036' и сохраняет их в country_id как текстовое значение;функция input() преобразует его в числовое значение.

...