首页 > 解决方案 > 在R中按条件插入字符串

问题描述

我有这种情况,但有更多信息:

Barcode
NM00000512
NM000522
NM00000513
NM000514

我想在较短的条形码中再插入两个零,如下所示:

Barcode
NM00000512
NM00000522
NM00000513
NM00000514

我试过这个df$Barcode <- gsub('NM000', "NM00000",df$Barcode)但没有用。谢谢

标签: rreplaceconditional-statementsgsub

解决方案


其他答案对零的数量做出假设(应该有五个)。我假设前面应该正好有两个字符。如果不是这种情况,您可以修改它以在第一个数字之前拆分字符串(或根据适用的任何不同规则)。

barcode <- c("NM00000512", "NM000522", "NM00000513", "NM000514")


pad <- function(barcode) {
  x <- as.integer(substring(barcode, 3)) #extract numbers
  n <- max(nchar(barcode)) - 2 #desired length of number in string
  paste0(substring(barcode, 1, 2), #the two characters
         sprintf(paste0("%0", n, "i"), x) #pad with zeros
         )
}

pad(barcode)
#[1] "NM00000512" "NM00000522" "NM00000513" "NM00000514"

推荐阅读