Skip to content

Instantly share code, notes, and snippets.

@jamiebono
Created May 10, 2018 14:38
Show Gist options
  • Select an option

  • Save jamiebono/37eaa1e0d9e7690389aecb7418915fda to your computer and use it in GitHub Desktop.

Select an option

Save jamiebono/37eaa1e0d9e7690389aecb7418915fda to your computer and use it in GitHub Desktop.
cleanup_ndc <- function(package_path, product_path){
require(dplyr)
require(stringr)
dpackage <- read_delim(package_path, delim = "\t")
dproduct <- read_delim(product_path, delim = "\t")
names(dproduct) <- tolower(names(dproduct))
names(dpackage) <- tolower(names(dpackage))
d <- inner_join(dproduct, dpackage)
isFmt442 <- grepl("[[:alnum:]]{4}-[[:alnum:]]{4}-[[:alnum:]]{2}", d$ndcpackagecode)
isFmt532 <- grepl("[[:alnum:]]{5}-[[:alnum:]]{3}-[[:alnum:]]{2}", d$ndcpackagecode)
isFmt541 <- grepl("[[:alnum:]]{5}-[[:alnum:]]{4}-[[:alnum:]]{1}", d$ndcpackagecode)
fmt <- rep(NA, nrow(d))
fmt[isFmt442] <- "4-4-2 format"
fmt[isFmt532] <- "5-3-2 format"
fmt[isFmt541] <- "5-4-1 format"
table(fmt, useNA="ifany")
d$fmtPackageCode <- format(fmt)
ndcSplit <- strsplit(d$ndcpackagecode, "-")
ndcSplit <- data.frame(matrix(unlist(ndcSplit), ncol=3, byrow=TRUE))
d$ndcPackageFmt11[isFmt442] <- paste0("0", ndcSplit$X1[isFmt442], ndcSplit$X2[isFmt442], ndcSplit$X3[isFmt442])
d$ndcPackageFmt11[isFmt532] <- paste0(ndcSplit$X1[isFmt532], "0", ndcSplit$X2[isFmt532], ndcSplit$X3[isFmt532])
d$ndcPackageFmt11[isFmt541] <- paste0(ndcSplit$X1[isFmt541], ndcSplit$X2[isFmt541], "0", ndcSplit$X3[isFmt541])
return(d)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment