В SAS у меня есть две переменные.
NEW: 12345678900 OLD: 2345678900
Мне нужен способ узнать, равны ли последние 10 символов в NEW последним 10 символам в OLD.
I ' Я пробовал множество вещей, но продолжает отмечать все, даже если они не равны.
Вы можете перевернуть строки и использовать =:. Или используйте substrn(), чтобы взять последние 9 непустых символов.
=:
substrn()
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
Попробуйте
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 будет счастливым.
if
substr