Используя буквы [1:26] с модулем 5, для контрольного символа в личном идентификационном номере создается «символ (0)», который должен быть «E». Есть ли способ обойти это? Это уменьшенная версия, но принцип тот же.
Я могу сгенерировать список векторов символов, но ноль из модуля создает выпадение для «11E».
PIN <- c("08A","07D","10C","11E", "10C")
DATA <- data.frame(PIN)
DATA %>% mutate(PIN = as.character(PIN)) -> DATA
LETTERS[(as.numeric(substr(DATA$PIN, start = 2, stop = 2)) * 7 +
as.numeric(substr(DATA$PIN, start = 1, stop = 1)) * 8 ) %% 5]
Формирует
[Output1] "A" "D" "C" "C"
В конце концов, я хочу запустить его снова для проверки альфа-символа для подтверждения номера.
substr(DATA$PIN, start = 3, stop = 3)
[Output2] "A" "D" "C" "E" "C"
Выпадение нарушает последовательность и вызывает смещения
[Output1] == [Output2]
[1] TRUE TRUE TRUE FALSE FALSE