背景:
车辆识别号码(Vehicle Identification Number,简称VIN码,亦称车架号),是车辆唯一ID标识,也是保险公司用于外部数据合作的主要匹配字段。
VIN码由17位字符(23个大写英文字母+数字,为避免混淆剔除了I、O、Q三个英文字母)组成,3位WMI+5位VDS+1位校验码+8位VIS,详情参考 17位车架号详解 。校验方法参考 车辆VIN码的校验算法 。
需求:
无论是内部管理还是对外合作,VIN码都是主要匹配字段。不过数据库里个别值的录入错误也是难免的,为了确保匹配的准确性,在外捍卫我大甲方的荣誉,清洗校验的过程还是必要的。(当然最简单的办法还是在录入时加一个自动核验)
实现:
#require(magrittr)
p.vin_check <-
function(vin){
vin %>% tapply(.,.,function(x){
substr(x,9,9) == (sum(c(1:8,NA,1:5,NA,7,NA,9,2:9,0:9)[char