Сравнение символов SAS - PullRequest
0 голосов
/ 06 мая 2020

В SAS у меня есть две переменные.

NEW: 12345678900 
OLD: 2345678900

Мне нужен способ узнать, равны ли последние 10 символов в NEW последним 10 символам в OLD.

I ' Я пробовал множество вещей, но продолжает отмечать все, даже если они не равны.

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Вы можете перевернуть строки и использовать =:. Или используйте substrn(), чтобы взять последние 9 непустых символов.

data want;
  set have;
  test1=reverse(trim(old)) =: reverse(trim(new));
  test2=substrn(old,length(old)-8) = substrn(new,length(new)-8);
run;

Результаты:

Obs    old           new            test1    test2

 1     2345678900    12345678900      1        1
 2     abc           xyz              0        0
1 голос
/ 06 мая 2020

Попробуйте

same_10char_tail = 0;

if length(new) > 9 and length(old) > 9 then
  if substr(new,length(new)-9) = substr(old,length(old)-9) then 
    same_10char_tail=1;

Вложенный if предотвращает предупреждение, которое могло бы появиться, если бы значение было меньше 10 символов. Только когда обе переменные имеют длину> = 10 символов, substr будет счастливым.

...