目前,下面的脚本将组合的项目代码拆分为特定的项目代码.
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)
Run Code Online (Sandbox Code Playgroud)
示例,组合项目代码:房间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"
Run Code Online (Sandbox Code Playgroud)
我假设你可以通过某种方式获得数值房间序列,然后使用我上面给你的片段.
如果您的组合商品代码始终具有表单Room xxx-yyy,则可以使用gsub以下内容提取范围:
range <- gsub("Room ", "", "Room 324-326")
Run Code Online (Sandbox Code Playgroud)
如果您的商品代码位于调用的向量中codes,那么您可以使用以下方法获取范围向量:
ranges <- sapply(codes, function(x) gsub("Room ", "", x))
Run Code Online (Sandbox Code Playgroud)