Z szuflady - test numeru pesel

Jakiś czas temu, napisałem kilka prostych funkcji sprawdzających poprawność numerów. Jedną z takich funkcji jest funkcja sprawdzająca poprawność numeru PESEL.

function(pesel){
 if(nchar((pesel))==11){
  cat("Poprawna długość numeru Pesel.\nSprawdzam poprawność numeru:\n")
  wagi <- "1379137913"
  suma=0
  for (i in 1:10){
    suma+as.numeric(substr(pesel,i,i))*as.numeric(substr(wagi,i,i)) -> suma
  }
  sumakontrolna <- 10 - (suma %% 10)
  if (sumakontrolna == as.numeric(substr(pesel,11,11))){
    cat ("NUMER PESEL PRAWIDŁOWY\n")
    return(TRUE)
  } else{
    cat ("Błąd sumy kontrolnej\n")
    return(FALSE)
  }
 }else{
   cat("Pesel ma nieodpowiednia ilość znaków.\n")}
   return(FALSE)
}

Created by Pretty R at inside-R.org

Poniższa implementacja przyjmuje jako argument wektor numerów pesel i zwraca wektor wartości logicznych TRUE, gdy prawidłowy i FALSE, gdy błędny.

function(PESEL){
 wynik <- logical(length(PESEL))
 for (p in 1:length(PESEL)){
  pesel <- PESEL[p]
  if(nchar((pesel))==11){
   wagi <- "1379137913"
   suma=0
   for (i in 1:10){
    suma+as.numeric(substr(pesel,i,i))*as.numeric(substr(wagi,i,i)) -> suma
   }
   sumakontrolna <- 10 - (suma %% 10)
    if (sumakontrolna == as.numeric(substr(pesel,11,11))){
     wynik[p] <- TRUE
    }else{wynik[p]<-FALSE}
  }else{wynik[p]<-FALSE}
 }
 return(wynik)
}

Created by Pretty R at inside-R.org

admin sobota, 10 grudzień 2011 - 11:03 pm | | Blog-R