当前,以下脚本正在将组合的物料代码拆分为特定的物料代码。

rule2 <- c("MR")
df_1 <- test[grep(paste("^",rule2,sep="",collapse = "|"),test$Name.y),]

SpaceName_1 <- function(s){
  num <- str_extract(s,"[0-9]+")
  if(nchar(num) >3){
    former <- substring(s, 1, 4)
    latter <- strsplit(substring(s,5,nchar(s)),"")
    latter <- unlist(latter)
    return(paste(former,latter,sep = "",collapse = ","))
  }
  else{
    return (s)
  }
}

df_1$Name.y <- sapply(df_1$Name.y, SpaceName_1)


例,
组合物品代码:324-326室被分成MR324 MR325 MR326。

但是,对于此特定的组合项目代码:309-311室被分为MR309 MR300 MR301。

我应该如何修改脚本以给我MR309 MR310 MR311?

最佳答案

您可以尝试以下方法:

range <- "324-326"
x <- as.numeric(unlist(strsplit(range, split="-")))
paste0("MR", seq(x[1], x[2]))

[1] "MR324" "MR325" "MR326"


我假设您可以通过某种方式获得数字房间序列,然后使用我上面提供的代码段。

如果组合的商品代码始终为Room xxx-yyy形式,则可以使用gsub提取范围:

range <- gsub("Room ", "", "Room 324-326")


如果您的商品代码位于名为codes的向量中,则可以使用以下方法获得范围的向量:

ranges <- sapply(codes, function(x) gsub("Room ", "", x))

08-24 22:27