病案首頁手術編碼修改_16Oct2020

背景

當形如 03.3100 的手術編碼被錯誤的讀成數(shù)值后,比如在 Excel 中,一旦進行修改后保存,則變成 3.31,需要恢復成 03.3100

目的

解決上述問題,當然更好地解決這個問題就是讀成文本

說明

以下的代碼能解決問題,雖然很不優(yōu)雅,例如用purrr迭代會好一些,有時單位機器是內網,沒有包,順手寫了也懶得改了,能用就行,能用就行

mysplit <- function(text) {
  sentence <- strsplit(text, "")
  sentence1 <- unlist(sentence)
  wl <- list()
  for (i in seq_along(sentence1)) {
    wrd <- sentence1[i]
    wl[[wrd]] <- c(wl[[wrd]], i)
  }
  wl
}

findit <- function(a, b) {
  temp <- mysplit(a)
  temp[[b]]
}

fill0pre <- function(x) {
  if (x != "") {
    if (findit(x, ".") == 2) {
      paste0("0", x)
    } else {
      x
    }
  } else {
    x
  }
}

fill0post <- function(x) {
  if(x == "") {
    x
  } else {
    if (nchar(x) >= 7) {
      x
    } else {
      x <- paste0(x, "0")
      fill0post(x)
      }
  }
}

fill0_2sides <- function(x) fill0post(fill0pre(x))

fill0vec <- function(x) {
  out <- vector()
  for (i in seq_along(x)) {
    out[i] <- fill0_2sides(x[i])
  }
  out
}

opreations <- c("C14x01C",
                 paste0("C35x0", 1:9, "C"),
                 paste0("C35x", 10:40, "C")
                )

dat <- read.csv("allcols.csv", 
          stringsAsFactors = F, colClasses = "character")

for (i in opreations) {
  dat[[i]] <- fill0vec(dat[[i]])
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。